From 3662ed8f0ba8e290b348577b5e289e1cb375004c Mon Sep 17 00:00:00 2001 From: Samuel Tardieu Date: Thu, 27 Dec 2007 15:17:21 +0100 Subject: [PATCH] Use s> and >s instead of r> and >r to avoid confusion --- extra/math/algebra/algebra.factor | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/extra/math/algebra/algebra.factor b/extra/math/algebra/algebra.factor index 6ba445b0b0..0dfd086e70 100644 --- a/extra/math/algebra/algebra.factor +++ b/extra/math/algebra/algebra.factor @@ -1,27 +1,30 @@ ! Copyright (c) 2007 Samuel Tardieu ! See http://factorcode.org/license.txt for BSD license. -USING: kernel math math.ranges namespaces sequences vars math.algebra ; +USING: kernel math math.ranges namespaces sequences vars ; IN: math.algebra " and ">r", so we chose to use "s" instead. + +VARS: s-1 u-1 v-1 s u v ; : init ( a b -- ) - >r >r-1 0 >u 1 >u-1 1 >v 0 >v-1 ; + >s >s-1 0 >u 1 >u-1 1 >v 0 >v-1 ; : advance ( r u v -- ) - v> >v-1 >v u> >u-1 >u r> >r-1 >r ; inline + v> >v-1 >v u> >u-1 >u s> >s-1 >s ; inline : step ( -- ) - r-1> r> 2dup /mod drop [ * - ] keep u-1> over u> * - v-1> rot v> * - + s-1> s> 2dup /mod drop [ * - ] keep u-1> over u> * - v-1> rot v> * - advance ; PRIVATE> ! Extended Euclidian: http://en.wikipedia.org/wiki/Extended_Euclidean_algorithm : ext-euclidian ( a b -- gcd u v ) - [ init [ r> 0 > ] [ step ] [ ] while r-1> u-1> v-1> ] with-scope ; foldable + [ init [ s> 0 > ] [ step ] [ ] while s-1> u-1> v-1> ] with-scope ; foldable ! Inverse a in ring Z/bZ : ring-inverse ( a b -- i )