aboutsummaryrefslogtreecommitdiffstats
path: root/gen
diff options
context:
space:
mode:
authorGavin Howard <gavin@yzena.com>2021-06-15 17:29:34 -0600
committerGavin Howard <gavin@yzena.com>2021-06-15 17:29:34 -0600
commit11a88750e61afb35bc92beffc36d5e81a77a5ca3 (patch)
tree8082bfd355d2e21041139f0c044d7ed5f16c8576 /gen
parentb1033e983550b9bd09c328a9af90e0cb79608062 (diff)
downloadplatform_external_bc-11a88750e61afb35bc92beffc36d5e81a77a5ca3.tar.gz
platform_external_bc-11a88750e61afb35bc92beffc36d5e81a77a5ca3.tar.bz2
platform_external_bc-11a88750e61afb35bc92beffc36d5e81a77a5ca3.zip
Add gcd and lcm to lib2
I really want these. Signed-off-by: Gavin Howard <gavin@yzena.com>
Diffstat (limited to 'gen')
-rw-r--r--gen/lib2.bc31
1 files changed, 31 insertions, 0 deletions
diff --git a/gen/lib2.bc b/gen/lib2.bc
index 399c7ad3..e90b9757 100644
--- a/gen/lib2.bc
+++ b/gen/lib2.bc
@@ -129,6 +129,37 @@ define root(x,n){
return r@s
}
define cbrt(x){return root(x,3)}
+define gcd(a,b){
+ auto g,s
+ if(!b)return a
+ s=scale
+ scale=0
+ a=abs(a)$
+ b=abs(b)$
+ if(a<b){
+ g=a
+ a=b
+ b=g
+ }
+ while(b){
+ g=a%b
+ a=b
+ b=g
+ }
+ scale=s
+ return a
+}
+define lcm(a,b){
+ auto r,s
+ if(!a&&!b)return 0
+ s=scale
+ scale=0
+ a=abs(a)$
+ b=abs(b)$
+ r=a*b/gcd(a,b)
+ scale=s
+ return r
+}
define pi(s){
auto t,v
if(s==0)return 3