def d2logpdf_df2_dtheta(self, f, y, Y_metadata=None):
if self.size > <NUM_LIT:0>:<EOL><INDENT>if self.not_block_really:<EOL><INDENT>raise NotImplementedError("<STR_LIT>")<EOL><DEDENT>if isinstance(self.gp_link, link_functions.Identity):<EOL><INDENT>return self.d2logpdf_dlink2_dtheta(f, y, Y_metadata=Y_metadata)<EOL><DEDENT>else:<EOL><INDENT>inv_link_f = self.gp_link.transf(f)<EOL>dlink_df = self.gp_link.dtransf_df(f)<EOL>d2link_df2 = self.gp_link.d2transf_df2(f)<EOL>d2logpdf_dlink2_dtheta = self.d2logpdf_dlink2_dtheta(inv_link_f, y, Y_metadata=Y_metadata)<EOL>dlogpdf_dlink_dtheta = self.dlogpdf_dlink_dtheta(inv_link_f, y, Y_metadata=Y_metadata)<EOL>d2logpdf_df2_dtheta = np.zeros((self.size, f.shape[<NUM_LIT:0>], f.shape[<NUM_LIT:1>]))<EOL>for p in range(self.size):<EOL><INDENT>d2logpdf_df2_dtheta[p, :, :] = chain_2(d2logpdf_dlink2_dtheta[p,:,:], dlink_df, dlogpdf_dlink_dtheta[p,:,:], d2link_df2)<EOL><DEDENT>return d2logpdf_df2_dtheta<EOL><DEDENT><DEDENT>else:<EOL><INDENT>return np.zeros((<NUM_LIT:0>, f.shape[<NUM_LIT:0>], f.shape[<NUM_LIT:1>]))<EOL><DEDENT>
TODO: Doc strings