version 1.5, 2001/10/09 01:36:10 |
version 1.8, 2007/02/18 05:36:27 |
|
|
* 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/N.c,v 1.4 2000/12/21 02:51:45 murao Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/engine/N.c,v 1.7 2004/12/04 09:39:27 noro Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include "base.h" |
#include "base.h" |
|
|
#if defined(VISUAL) || defined(i386) |
#if defined(VISUAL) || ( defined(i386) && !defined(__DARWIN__) ) |
void addn(N n1,N n2,N *nr) |
void addn(N n1,N n2,N *nr) |
{ |
{ |
unsigned int *m1,*m2,*mr; |
unsigned int *m1,*m2,*mr; |
Line 670 extern int igcd_algorithm; |
|
Line 670 extern int igcd_algorithm; |
|
|
|
void gcdEuclidn(), gcdn_HMEXT(); |
void gcdEuclidn(), gcdn_HMEXT(); |
|
|
|
void lcmn(N n1,N n2,N *nr) |
|
{ |
|
N g,t; |
|
|
|
gcdn(n1,n2,&g); |
|
divsn(n1,g,&t); |
|
muln(t,n2,nr); |
|
} |
|
|
void gcdn(N n1,N n2,N *nr) |
void gcdn(N n1,N n2,N *nr) |
{ |
{ |
if ( !igcd_algorithm ) |
if ( !igcd_algorithm ) |
|
|
free(n); |
free(n); |
} |
} |
|
|
|
/* accepts Z */ |
int n_bits(N n) |
int n_bits(N n) |
{ |
{ |
unsigned int l,i,t; |
unsigned int i,t; |
|
int l; |
|
|
if ( !n ) |
if ( !n ) |
return 0; |
return 0; |
l = PL(n); t = BD(n)[l-1]; |
l = PL(n); |
|
if ( l < 0 ) l = -l; |
|
t = BD(n)[l-1]; |
for ( i = 0; t; t>>=1, i++); |
for ( i = 0; t; t>>=1, i++); |
return i + (l-1)*BSH; |
return i + (l-1)*BSH; |
} |
} |