version 1.13, 2002/09/30 06:13:07 |
version 1.16, 2003/01/16 00:33:28 |
|
|
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* |
* |
* $OpenXM: OpenXM_contrib2/asir2000/engine/gfs.c,v 1.12 2002/09/27 08:40:49 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/engine/gfs.c,v 1.15 2003/01/06 01:16:39 noro Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include "inline.h" |
#include "inline.h" |
Line 661 int mulremum_enc(int p,int n,UM dp,int a,int b) |
|
Line 661 int mulremum_enc(int p,int n,UM dp,int a,int b) |
|
|
|
void gfs_galois_action(GFS a,Q e,GFS *c) |
void gfs_galois_action(GFS a,Q e,GFS *c) |
{ |
{ |
Q q; |
Q p; |
int i,k; |
int i,k; |
GFS t,s; |
GFS t,s; |
|
|
t = a; |
t = a; |
k = QTOS(e); |
k = QTOS(e); |
STOQ(current_gfs_q,q); |
STOQ(current_gfs_p,p); |
for ( i = 0; i < k; i++ ) { |
for ( i = 0; i < k; i++ ) { |
pwrgfs(t,q,&s); t = s; |
pwrgfs(t,p,&s); t = s; |
} |
} |
*c = t; |
*c = t; |
} |
} |
Line 750 void gfstomq(GFS a,MQ *c) |
|
Line 750 void gfstomq(GFS a,MQ *c) |
|
} |
} |
} |
} |
|
|
|
void gfstopgfs(GFS a,V v,P *c) |
|
{ |
|
MQ t; |
|
Q q; |
|
|
|
if ( !a ) |
|
*c = 0; |
|
else if ( !current_gfs_ntoi ) { |
|
UTOMQ(CONT(a),t); |
|
STOQ(CONT(t),q); |
|
*c = (P)q; |
|
} else |
|
enc_to_p(current_gfs_p,current_gfs_iton[CONT(a)],v,c); |
|
} |
|
|
void ntogfs(Obj a,GFS *b) |
void ntogfs(Obj a,GFS *b) |
{ |
{ |
P t; |
P t; |
Line 1132 int _itosf(int n) |
|
Line 1147 int _itosf(int n) |
|
{ |
{ |
int i; |
int i; |
|
|
|
/* XXX */ |
|
#if 0 |
n %= current_gfs_p; |
n %= current_gfs_p; |
|
#else |
|
n %= current_gfs_q; |
|
#endif |
if ( !n ) |
if ( !n ) |
return 0; |
return 0; |
i = !current_gfs_ntoi ? n : current_gfs_ntoi[n]; |
i = !current_gfs_ntoi ? n : current_gfs_ntoi[n]; |