FPINT { ADD (e1) (e2) (e3) , <BR 'PX=' e3>:ex = <FPADD (e1) e2 >; SUB (e1) (e2) (e3) , <BR 'PX=' e3>:ex = <FPSUB (e1) e2 >; MUL (e1) (e2) (e3) , <BR 'PX=' e3>:ex = <FPMUL (e1) e2 >; DIV (e1) (e2) (e3) , <BR 'PX=' e3>:ex = <FPDIV (e1) e2 >; INV (e1) (e3) , <BR 'PX=' e3>:ex = <FPINV e1 >; } * Сложение FPADD { (e1) e2 = <COKP <FPADD1 (e1) e2>>; } FPADD1 { (e1 (e2)) e3 (e4) = <FPADD1 (e1) e3> <PADD (e2) (e4)>; (e1) e2 = e1 e2; } COKP { e1 = e1; } * Вычитание FPSUB { (e1) e2 = <COKP <FPSUB1 (e1) e2>>; } FPSUB1 { (e1 (e2)) e3 (e4) = <FPSUB1 (e1) e3> <PSUB (e2) (e4)>; (e1) = e1; ( ) e2 = <FPSUB1 ( (0) ) e2 >; } * Умножение FPMUL { (e1) = ; ( ) e2 = ; (e1) e2, <CP 'PX'>: e.PX = <FPMUL9 <FPDO (<FPM ( ) (e1) e2>) e.PX >>; } FPMUL9 { e0 (eR) = eR; } FPM { (e1) (e2) = e1; (e1) (e2) (e3) e4 = <FPM (<FPADD (<FPX e1>) <FPMQ (e2) (e3)>>) (e2) e4>; } FPX { = ; e1 = e1 (0); } FPMQ { (e1) = ; ((e1) e2) (e3) = <PMUL (e1) (e3)> <FPMQ (e2) (e3)>; ( ) (e3) = ; } * Деление с остатком FPDO { ( ) e1 = ( ); (e1) e2 = <FPDOA ( ) (e1) ( ) (e2)>; } FPDOA { (e1) ((e2) e3) (e4) ((e5) e6) = <FPDOA (e1 (e2)) (e3) (e4 (e5)) (e6)>; (e1) ( ) (e4) ((e5) e6) = (e1); (e1) (e2) (e4) () = <FPDOB (e1) (e2) (e4)>; } FPDOB { ((e1) e2) (e3) ((e4) e5) = <FPDOC <PDR (e1) (e4)> ((e1) e2) (e3) ((e4) e5)>; } FPDOC { (e1) ((ex) e2) (e3) ((ey) e4) = (e1) <FPDOD ( <FPSUB1 (e2) <FPMQ (e4) (e1)>> ) (e3) ((ey) e4) >; } FPDOD { (e1) ( ) (e4) = ( <COKP e1> ); (e1) ((e2) e3) (e4) = <FPDOB (e1 (e2)) (e3) (e4)>; } * ------------------------------------------------- PADD { (e1) (e2) , <Q_add (e1) e2> : e3 = (e3) ; } PSUB { (e1) (e2) , <Q_sub (e1) e2> : e3 = (e3) ; } PMUL { (e1) (e2) , <Q_mul (e1) e2> : e3 = (e3) ; } PDR { (e1) (e2) , <Q_div (e1) e2> : e3 = (e3) ; } * ------------------------------------------------- * Обратный элемент FPINV { eM, <CP 'PX' >: e.PX = <FPINV1 (e.PX) ( ) (eM) (( 1 )) >; } FPINV1 { (eA) (eX) ((e.S)) (eJ) = <FPINV7 (eJ) (e.S)>; (eA) (eX) (eB) (eJ) = <FPINV1 (eB) (eJ) <FPINV2 (eX) (eJ) <FPDO (eA) eB>>>; } FPINV2 { (eX) (eJ) eQ (eR) = (eR) (<FPSUB (eX) <FPMUL (eJ) eQ >>); } FPINV7 { ((e1) e2) (e3) = <PDR (e1) (e3)> <FPINV7 (e2) (e3)>; ( ) (e3) = ; } FPDIV { (e1) e2 = <FPMUL (e1) <FPINV e2>>; } *