private static void gt1(float[] c, float[][] g1, float[][] x) { int n2 = x.length; for (int i2=0; i2<n2; ++i2) gt(c,g1[i2],x[i2]); } private static void gt2(float[] c, float[][] g2, float[][] x) {
float c3y2 = c3*y2; yp3[i1] += c3y2; ym3[i1] -= c3y2; gt(C71,g1,y[i2]);
gt(C71,g1,g2,y[i3]);
private static void testGrad1() { int n = 21; float[] x = randfloat(n); float[] y = randfloat(n); //float[] x = zerofloat(n); x[0] = x[n/2] = x[n-1] = 1.0f; //float[] y = zerofloat(n); y[0] = y[n/2] = y[n-1] = 1.0f; float[] gx = zerofloat(n); float[] gy = zerofloat(n); gf(C71,x,gx); // Gx gt(C71,y,gy); // G'y dump(gx); dump(gy); float ygx = sum(mul(y,gx)); // y'Gx float xgy = sum(mul(x,gy)); // x'G'y trace("ygx="+ygx); trace("xgy="+xgy); } private static void testGrad2() {
private static void testGrad2() { int n1 = 11; int n2 = 21; float[][] x = randfloat(n1,n2); float[][] y1 = randfloat(n1,n2); float[][] y2 = randfloat(n1,n2); float[][] y = zerofloat(n1,n2); float[][] x1 = zerofloat(n1,n2); float[][] x2 = zerofloat(n1,n2); gf(C71,x,x1,x2); gt(C71,y1,y2,y); float ygx = sum(add(mul(y1,x1),mul(y2,x2))); float xgy = sum(mul(x,y)); trace("ygx="+ygx); trace("xgy="+xgy); } public static void main(String[] args) {