[BACK]Return to taka_hg32.rr CVS log [TXT][DIR] Up to [local] / OpenXM / src / asir-contrib / packages / src

File: [local] / OpenXM / src / asir-contrib / packages / src / taka_hg32.rr (download)

Revision 1.4, Wed Sep 5 06:26:02 2001 UTC (22 years, 8 months ago) by takayama
Branch: MAIN
CVS Tags: R_1_3_1-2, RELEASE_1_3_1_13b, RELEASE_1_2_3_12, RELEASE_1_2_3, RELEASE_1_2_2_KNOPPIX_b, RELEASE_1_2_2_KNOPPIX, RELEASE_1_2_2, RELEASE_1_2_1, KNOPPIX_2006, HEAD, DEB_REL_1_2_3-9
Changes since 1.3: +55 -38 lines

base_replace() is used instead of eval_variables_in_quote().
Because eval_variables_in_quote() causes some troubles (ask Noro-san for details).

/* $OpenXM: OpenXM/src/asir-contrib/packages/src/taka_hg32.rr,v 1.4 2001/09/05 06:26:02 takayama Exp $ */
/*  experimental module for hypergeometric function identities. 
    cf.  nach/3f2hom.rr
*/

def taka_hg21(A1,A2,B2,Z) {
  F = quote(hypergeometric_2F1(a1,a2,b2,z));
  F2 = base_replace(F,[[a1,A1],[a2,A2],[b2,B2],[z,Z]]);
  return F2;
}

/* z^(-B2+1) * cycle * ds/ds */
def taka_hg21_cycle(A1,A2,B2,Z,S) {
  U=S^(A2)*(Z-S)^(B2-1-A2)*(1-S)^(-A1);
  Rule = [[a1,A1],[a2,A2],[b2,B2],[z,Z],[s,S],[u,U]];
  C1 = quote(algebra_tensor(topology_open_segment(z,1),u));
  C1 = base_replace(C1,Rule);

  C2 = quote(algebra_tensor(topology_open_segment(0,z),u));
  C2 = base_replace(C2,Rule);

  return([C1,C2]);
}

def taka_hg21_reg_cycle(A1,A2,B2,Z,S) {
  U=S^(A2)*(Z-S)^(B2-1-A2)*(1-S)^(-A1);
  C = [[u,U]];
  Rule = [[a1,A1],[a2,A2],[b2,B2],[z,Z],[s,S]];
  C1 = quote(algebra_tensor(topology_open_segment(z+varepsilon,1-varepsilon),u));
  C1 = base_replace(C1,Rule);

  S1a = quote(topology_circle(z,varepsilon));
  C1a = quote(1/(c5-1));
  C   = append(C,[[c5,quote(exp(2*c_pi*c_i*(b2-1-a2)))]]);
  Sa = quote(algebra_tensor(s1a,c1a*u));
  Sa = base_replace(Sa,append(Rule,[[s1a,S1a],[c1a,C1a]]));

  S1b = quote(topology_circle(1,varepsilon));
  C1b = quote(1/(c2-1));
  C   = append(C,[[c2,quote(exp(2*c_pi*c_i*(-a1)))]]);
  Sb = quote(algebra_tensor(s1b,c1b*u));
  Sb = base_replace(Sb,append(Rule,[[s1b,S1b],[c1b,C1b]]));

  C1 = Sa+C1+Sb;

  /* C2 has not yet been set. */
  C2 = quote(algebra_tensor(topology_open_segment(0+varepsilon,z-varepsilon),u));
  C2 = base_replace(C2,Rule);

  S1a = quote(topology_circle(0,varepsilon));
  C1a = quote(1/(c4-1));
  C   = append(C,[[c4,quote(exp(2*c_pi*c_i*a2))]]);
  Sa = quote(algebra_tensor(s1a,c1a*u));
  Sa = base_replace(Sa,append(Rule,[[s1a,S1a],[c1a,C1a]]));

  S1b = quote(topology_circle(z,varepsilon));
  C1b = quote(1/(c5-1));
  Sb = quote(algebra_tensor(s1b,c1b*u));
  Sb = base_replace(Sb,append(Rule,[[s1b,S1b],[c1b,C1b]]));

  C2 = Sa+C2+Sb;


  C = base_replace(C,Rule);
  print(C);
  Cond = quote(base_where(c));
  Cond = base_replace(Cond,[[c,C]]); 
  return([[C1,C2],Cond]);
}

def taka_hg21_exp(A1,A2,B2) {
  C = [ [c2,exp(2*c_pi*c_i*(-A1))],
        [c4,exp(2*c_pi*c_i*A2)],
        [c5,exp(2*c_pi*c_i*(B2-1-A2))]];
  Cond = quote(base_where(c));
  Cond = base_replace(Cond,[[c,C]]); 
  return Cond;  
}

def taka_hg21_monodromy(A1,A2,B2) {
  M0 = newmat(2,2,
        [[1,0],
         [c5*(1-c4),c4*c5]]);
  M1 = newmat(2,2,
        [[c2*c5,1-c2],
         [0,1]]);
  C = taka_hg21_exp(A1,A2,B2);
  return( [[M0,M1],C] );
}


def taka_hg21_intersection_matrix_for_cycles(A1,A2,B2) {
  Ih = newmat(2,2,
      [[quote(1/(c5^(-1)-1) + 1 + 1/(c2^(-1)-1)), quote(-1/(c5^(-1)-1))],
       [quote(-c5^(-1)/(c5^(-1)-1)), quote(1/(c4^(-1)-1) + 1 + 1/(c5^(-1)-1))]]);
  return [Ih,taka_hg21_exp(A1,A2,B2)];
}

end$