' JJJJ ?\>',=l>  JJJJ!xHH<>BC=?L,L=LLLW LL* L_ L L L Lc`\_ [ {}~|`{}~|ح! )i ɶLhh捠 W LiHH`,` a $(H (G h$(IL]  8` a ƀ餁L]   思 L  G L G L  L L  L4  :L Lʩ L a y LDFG` )  L 6  H ɓ, h H h %2$($` $L| L  $` "%$L"LX  y $)` I L5H  Ih5`a{)`#`$` I $  o  8` ` & `  慥) 8` I _ 0 膆8` I H h톉ߥ N `  8`  `   ) `  ` NHh  L~ N s w  N 8`` s  w H hi`8`i`HJJh )`N`ɄNHNh` c SCRAMBLED DIRECTORYLe o ɄԝN`8``  iL   iL H  h s O c CANNOT READL H  h s * $ c BAD OR UNFORMATTEDL l !` c WRITE-PROTECTED c DISK; cESC TO ABORT SPACE TO IGNORE, RETURN TO RE-TRY:   L c ` m ) !) `)P)@ xLA `BU,>J>VJ>V`8'x0|&HhHh VY)'&Y)xꪽ)' `Hh`V0^*^*>&` cI꽌ɪVɭ&Y&&Y& 꽌ɪ\8`&&꽌ɪɖ'*&%&,E'зЮ꽌ɪФ`+*xS&x'8*3Ixix&& 8  '  & x)*++`FG8`0($ p,&"  !"#$%&'()*+,-./0123456789:;<=>?80^݌Hh ü ü݌ ռ ռ ռA ļD ļ? ļAEDE?HJ>h Լ ռ ռ ռ`HJ>݌h Hh݌`HIHHHHhHH݌hHhHh݌H6 VDP (ED _ $0x8x D- ڸDD# H8`?E Vk (f???0xE Hh D#-EEE8` D ڸx D - ڸx8`-0ݩ?ʥD EEE`   D#-EEE8` D ڸx D -sLIM DIF}SIGMA ALGDISKCOPY COM l `CAT^REN-DELSAV^TYP:RUN LOA׳MOVpGETޱPUTINIFORMONeIN#QPR#W8$6 Y  # 8` p *  p _  `L h& s " c UNABLE TO FORMAT DISK` h 8` )N )i TOO LONG`  pHCOM ܳhH bh  pL p *  _  W ɓ8`` ` b   :D)  *.%  0  ,.8` 08` `  $H    h m mMUSIMP COMMUSIMPX COM(TRACE MUS,ARITH MUS=ALGEBRA ARIHEQN ALGJSOLVE EQNNARRAY ARISMATRIX ARRYLOG ALG[TRGPOS ALG^TRGNEG ALGbDIF ALGfINT DIFlINTMORE INTTAYLOR DIFح"_" / LI cAPPLE ][ ADIOS-81 Version 01/29/82 ^ l ! 0 W ) W  !  񭰵:Q1J7F)!Le&HH   lK ( :Lk$ ,+L c !hiУ`L W  W ` pH hHH phh 8` pU P Y մIH hBHH hh8Lv p# L h cINSUFFICIENT DISK SPACE` ó챊 ` p/ * * Y _ n拥ɰ cFILE  !"#$%&')*+-./0123456789:;<>?@ABCDEFGIKLMOPQRTUVWXeZ\]_`acdghijkmnopqr|tuvwxyz{~RIX ARRYLOG ALG[TRGPOS ALG^TRGNEG ALGbDIF ALGfINT DIFlINTMORE INTTAYLOR DIF &8` )N )i &8`   6,+ 0 s w l l ! 0 cFREE ON : 8 * c K-BYTES8`HNH+, l hAN9m *hH  +8`h`0:)8``  ` L 178`dH W h H W hLMd R R 0LW 8mH Mh`! 0 cERASE ALL FILES ON DRIVE 1 (Y/N):   Y N W ` W 8` h H W hLMd R R 0LW 8mH Mh`! 0 cERASE ALL FILKʩ`˩ȩɠɱʑȈʑȥʩ˩©GL ̅ʩ˩© ʩG˥܅¥݅ ޅʥ߅˥¥ ʥ˥¥ ʥ˥¥ ʥ˥¥ ʥ˥¥ ȩɩʩ˩© LȑЅ˥ȥ`ȥ` ʥ`̥`ΥɑΥȑ`ΥˑΥʑ`ΥÑΥ‘`ΥΥ`ΥőΥđ`ΥǑΥƑ`Υ͑Υ̑`΅α΅`΅α΅`΅α΅`΅α΅ȱȑ`ʪȱʆʅ`ȥ`ȩG`ʩG`ʩG`ƩG`ƩG`ʅ`ȅ ` N `̅ȱ̅`̅ȱ̅`̅ȱ̅`̅ȱ̅`̅ȱ̅`̅ȱ̅`̅ȱ̅`̅ȱ̅`̅ȱ̅`̅ȱ̅`̅ȱ̅` ̅ȱ̅` 1 The SOFT WAREHOUSE Licensed by MICROSOFT, Inc. Յׅԭ 5 EȄʩɩ˱ȑ˥ɶL9WWab[[ ܩGݩ%ȩɠܑܥݑܘܩGܱȑ ȑ ȑܥɑ U吴ޅ E iȐɥ` ʑȥˑ` ȑȥɑ` ȑȥɑ`     ` ߰"L3 p&L3 %L* GL* p& ^L3 p&L* p& ^L* p&  Z)L*  L  qL  $L* ~& <LL&Lx*L L ! (1FALSE1TRUE1FUNCTION1SUBROUTINE*FIRST:RESTJSECONDPRRESTVTHIRD\RRRESTADJOIN2LISTREVERSEOBLIST+REPLACEF:REPLACERICONCATENeNAMEqINTEGERwATOMEMPTYPOSITIVENEGATIVEZERO`ȅ¥Ʌ`ȅĥɅ`ȅƥɅ`ʅȥ˅`ʅ¥˅`ʅƥ˅`…ȥÅ`…ʥÅ`…Å`…ĥÅ`ȥ`ĥ`ąŅ`ą̥Ņ`ƅȥDž`̅ʥͅ`̅ĥͅ`ޅʥ߅`  ʥ`  5!ȥ`ȥ`¥`ʥ˥ȥ`ʥ`¥`ʥ`ªȱ†…`…ȱ…`ʑȥˑ`‘ȥÑ`ƑȥǑ`ƑȥǑ`ȑȱȑ`ʑȱʑ`ʅȱʅ`ƅȱƅ`ȑȥɑ`ʑȥˑ`ʑȥˑ`ȑȱȑ`ȑȱȑ`ʑȱʑ`ȅȱȅ`ʪȱʆʅ`ʅȱʅ`ʑȥˑ`̱̱̅̅`̱̱̅̅`̠̅ɩG̱̅ȩ`̠̅˩G̱̅ʩ`̠̅éG̱̅©`̠̅G̱̅`̠̅ǩG̱̅Ʃ`  muSIMP-80 2.15 (03/01/82) APPLE ][ ADIOS Version Copyright (C) 198Lr*L*Ȅʩɩ˱ȑ˥ɶL ʪȱʆʅ` ʪȱʆʅ` :L- :L= PL- PL=  _  *  ' z  L5! L  _ r JA D 'ˑʑɑȑʥ` L     a`ȅʩGɅ ) ˥` ʥ˥¥ ʥ˥¥ ʥ˥¥ ȩɩʩ˩© Lȑ :2:2ͳ:_³ͯ !6! @!!BH @@ABH B! "BHI$$BI$BI $ HI ADCHAR1ECHO+WRS,PRINTLINE,PRINT%,NEWLINE<,SPACESS,LINELENGTHo,RADIX/TEXT /GRAPHICS.PLOTH/PADDLEf/BEEP2'IDENTITYEVALAPPLY2COND,3LOOPDRIVERRECLAIM/SAVEJ0LOADMEMORYSYSTEM5POP5PUSH````΅α΅`΅α΅`΅α΅` ȪȱȆȅ` ȅȱȅ` ȅȱȅ`ȅȱȅ`ȅȱȅ`ʅȱʅ` ʅȱʅ`ʅȱʅ`…ȱ…`…ȱ…̅ȱ̅` L Lȑȥɑ`ʑȥˑ`‘ȥÑ`ȩG`̩G`ȑ̥ɑ`ʑ̥ˑ`‘̥Ñ`̥`Ƒ̥Ǒ`̱̱̅̅`̱̱̅̅`̱̱̅̅`g߅ggigggg 0 HFΥϥ  L  /hȩI * ;L<HHHGHHHȍHHH ' r ' ' ;L  < HL;  <L; JA DLx*  & M  & ‘EVENEQ=MEMBERGREATERLESSERORDERPORDEREDNOT4AND 5ORASSIGNi5:ASSOC GETPUT GETD} PUTD MOVD"COMPRESS"EXPLODE #ASCIIK#LENGTHu#MINUS#PLUS#DIFFERENCEQ$TIMES$QUOTIENT=%MOD%DIVIDE'RDSP(SCAN'READ(REL ~& <L3  L   L 8`ߐ3/ߐ)% z k   A  S68`` I =㐭 ) > M - q  ` ) > - q   ) =`E ) > M - ) >    q   I =(8`iΐ } ) h S S6    (.&IƥĦĥŦťȦ…†ȥɦÅÆ 7L*L+% ~&A a&  ʦȅȆʥ˦ɅɆ˥ąĆŅņ  A ;8 L*L5!ąhL{*L* ~& a&H  g9 8ȥ  hL%h8LF' } )  A 6!   >  9 1 ʥA 0   -`  ʩĩŭ! ȅ ) o1  6  ȅ )  8 L' ` G 5. F  *ץʍHˍH` ((3 61  +L) 11) ȅYiʐ˥ѥ˥HHHGHH1HHHhʈ(iܐL*У`ĩ <đĥőĄť  8ąŅ <8ް HHHHHHHHhʈ  -LIIGߩ -  - h -   #  # #L-#"# IŭIGоH  v =   L L=L* i̐ h" JA j¥à˜ȑ >!…)iÅi8̰  L ߰-ߐ'㰘  & DLt ߰ ߰ `L* ߰ E1ɒG Lx*U ) M * r ' e   L"L-L* ߰ AȅĩLx* &ۥץ…  L) … IåLo# - VLx* p& I  A 6L*L5!` ~& < L# EL# ~&Υ <L# EL# Lx# A  6L* A } )ȍB& K&hH m% r B&  h  $  DL   hL 9GǠQʅƱ` ߐ'#` ߐߐ  `hhL*ߐ51+ v H rª±†…hé8`` &`߰ Z` > C)HHG 1)߅  D+`  End-Of-File Read 'HHG )ԩ`ՅIHHG #F F5 gELY) HFLFׅ8 )׭HHG -8`)`HHG(`(`  ( T1 ) e' *  zL( *  L* *ʍHˍH`  ,L-  ) ,L  * & -L*  &  -#Lr*" r*  & "`! r*  &%!`Q C( - ) M ,  IG'IIG#" -ʩ. - ,)L- -#e° " `ߐ``߰L8`ߐ   LqȥʦȅȆʥ˦ɅɆ˥ąĆŅņ A LS6ʥ˥8ʰ ) > D  `  2 =L   ) > S  q    2 =` D8`   =L5!  ˑL5!)6 b M. > S  "  Ðʠ)`8`ȱ L9" ) I h"  ߐť > z L  ¥2 f I _ S  &  ' aҠL"L) & &  * U ) r 7# ' e  } R78ąʥŅ L*ąLx* rh8L5! ~&KH g98ȥ K&h  q   A 7 <L*L* 5!LąhHĥi̐ {*8̰  h    r% L ~& a&H  g98ȥ  (L' (L'L( ( * )) r ' ' e ( ) rL)( ' z  5! -` ()8)  +L)))  (Lj( (Lj( )L(   )L( ( Y1 o1 h x*ʍHˍH`  () ()` ( C1` () ()` )  r JA D` < Y1 ) (- E ( ) Y1- )(`HHG  G" 5. F   No Disk Space ) ) ML L- 'L!ߐȅɅȅʥɅ` f I _ȥʥȱ ( ~  r S )  _ 9"   D D L5!˜ȑL5! f I S råLCȑ ! ' >! ʑHG 1 HHG F +HHGFLbF  ߰>߰8 A ߰.G a)[ 8@`8`` ) ; & …8`,-  f I M /-  /LE  f I M /,  /)G  /EG GEE-L3 f I _  ~( r D ; a 'G ' L< 'L*Ȧʅʆȥɦ˅ˆ f ߰ 1Z S0  0  0 L3 uSYS &  SYS file NOT foundL* 0 F̅ȩɩʩ 0 0 0  0  0  0  0  0L<`SYS ߰ Aʩ0 LM.  ` +L&  ` !܅ʥ݅` 1 1 1 _ r  ; a 'G ; IL<3 )L_3 ZE  )L_3 L* ʦȅȆʥ˦ɅɆ = ) f  ) ȥ ~! > = G   L2Ȧʅʆȥɦ˅ˆɥΠ3ΩӑL?L\3 ZE  _L3Ȧʅʆȥɦ˅ˆ ; ' ) M߰ )  =   > -  L f IG M߰ )  ;L6E?98ąȥŅɥ8ą¥Ņà ñĥ`  }ȅ  ĥ ` qȑ   }LR7 ¦ȅȆ¥æɅɆ`L88ąʥŅ˥8ąȥŅ } >ʪ   :ʥĥ   Ċ` A   h >8ʥ ʅŠ :  8 q   h >  8   S8ąȥŅ z8ąĥŅ  } }ʪȅ  : ^=LD<  мGж S =L>   йGг  =     ) S <   r * < ' . |<`G!  ~ I  G L .`LC?G$! > ~ I   G r L?L?Ȧʅʆȥɦ˅ˆ ; ' f IqLr* /L* 0 / 0RG(S I-P', -L*  &d0 Lr*  &ׅFF  &EEǠF0E WL. & d` & (` &0`8`HHG  , 0y Ft JA̅ȩɩʩ 0 0 0  0  0  L 7 DL;K2 *L:2 ) M r = ' e  ) -`L*  5! * _ r M ; ' e ' I  - `2)м f L f`2)П f  ) >  =  G ; Π2ΩL?`H f I _ M ; ' IG`F5) ) M =  G`L* _ M ; ' IG`5) f  ) > M = L ! .L5!)Н ML= f I r M ; 'L5) M߰ ~  L/ MߐL*-6) f `  8` } :  ĥ劑 ` eą¥eŅ S h > } )ʅ  > 8    .  ĥL8   } )  h >ȅ _  :qʑʐ  ĥߊ    .  ĥ  .Ј`ʦȅȆʥ˦ɅɆ˥߰f 1 q=¥HH`G <8°àHH`  G 0G* S ^=L>   GeGY *` f  I߰l 1 S =L>G3L?;G S ^=L> LL2G `0:`8`A[L 1a{L 1"% C1 ()`   ` 1 1 h o1! L 1 1880` ii0`2 V߰ DL=  &G r -Π1ΩۑL@LD<G r - @LD<  2 'Π>ΩL@  >>H+H¥HH`   L .`G:¥HH`G S @L>  ) M *L&2 ) ZE  оGи SΠ>ΩǑL@    ) S h?  *Π>ΩL? LD ܐ)۱ȅ ȱȅ I ) LD fܐ _ bܐ - `8܅ĥ݅ť8eĥeť8eĥeť8̅ͅeĥe`pIqIG GC: $ PEKVVWWXabbrjtjpGG1'GG1/GGrb6GGXbA GG*N(GG:V0GGJ]8GGPf@GGVnHGG\vPGGXGG2`GGhGGpGG+xGG:GGIGGeGGqGGwGGGGGGGGGGGG1WIG1WIG1WIG1WGG1 WIG>h%WIGb-WG14WhJG18WJG1+-*/^PRTSPAC = ) ȥ ~C > = G  )LQ@) -HH`Ȧʅʆȥɦ˅ˆɥΠ@ΩL?L?߰G L$ )%  ) M  r )  .`߰G 2 $LA )%  ) M LBȅɅL C JDiȐɥ ! JDiȐɥ3  ܐ - $٥ . LC #iʐ˥  L . D /A%  ALL Spaces ExhaustedLE `8``օ `NF # F`NF NF`  F F8`HHG h OF gEք F  h F  ` FL FLL   ` ```Eɨ(GGb GG+HG,HG,"VG%,*HG<,4IGS,=IGo,JIG/RIG /Y IG.d(IGH/k0IGf/t8IG2{@IGHIGPIGXIG2`IG,3hIG fpIGxIG/IGJ0IGIGIG5IG5IGcWIG1WIG1 WIG1WIG1XKG1XKG1XKGPjXVGaVGaVGaVGaVGaVGaVGaVGaVGaVGaVGaVGaVGaVGaVGaPARSEMUSRPAR)LPAR(COMMA,BELLPRTMATHMAKDEFEX1EX2LEX1 *** REDEFINED: PUTPROPEX3DELIMITEREXIT .G߰  ; <` ~   G <)'  ~   G <) .`G@G ~    G ) ~    G )ʐ`߰   ; ` L;> ʦȅȆʥ˦ɅɆ = )V fʅ˅ 5!i8Ȱɠ))   } ) >  A 68ąŅ     8ʰL Biʐ˥ʅޥ˅ߥʥˠ) )LiȐɠ)Iȥ8ʰ˱I)Iʥ S 8܅ĥ݅ IE8ĥ IE8ĥ IE8̅ĥͅ IE D IELE  ` OF  INTERRUPT! Continue:  Executive: System:  F  FL<? FLE  ` FI'IЭЩѱБGG GGGGGG#GG,GG5HG?HG4EHG 5KHGP HGi5Y(HG]0HG e8HGk@HG qHHG} xPHG XHG"`HG"hHG #pHGK#xHGu#HG#HG#HGQ$HG$HG=%HG%GG'hJGP(HG'GG1WJG1WJ଒1WJG1WJGdWJG1XJGjeXKG1 XKGeXKGeXKG1&X KG1+X(KG11XGG19X8KG1=X@KG1?XGG1AXPKG1CX`KG1RX`KG1UXhKGWXpKGYXxKG#[XKGpg]XKGQ$_XKGgaXKG1cXKGgeXKGgnXKG1wXKGg|XGG1XKG =  r )  .HH`8 i`$pI qIG E D©G  C  Ciåݥ   C .ȥɠ8Ȱɱ)LALB)ȥ8Ȱɱ) ZEPRTPARENLOP1PRTLISTPOINTNUMBERDENNUMPRTDIGxd2bHAHJIbJGNbJ)G@bJJJGJ^bInbjbfb)GJ9IG!GJGJxbInbbfb9IGGcbbbbJ9HJJ(JbbJIHb(J9HJJbYHbYGJJGbdK1H@dKgggggbgiKJg1H@dK1H@dKgbqKJg1HdK1HdKG8h4h h0hh hHIaI(h&h"h hh!HJVgKHI]gIJVVHIHKKJJG@j,jJi@i6i iiih^hVhKKJJhhh|hnhjhKIIJvhV1HdKaIh h4h hhhIJhh1H@dK1HdK]g!HJVgIJVh1H@dKKI HhJG HXIKĩȩgHHEg HHHaIZgRgbfHVgIJ]gGJHPK!H0KGmgII0KGe~gxgHJJggyHJGJGegHJJGGgbfgHKGheggggbgiKJg1H@JiHJJiiiii!HJiKJHi9IKiii0h!HKGqKJVGJ!HKG!HJjKJ!HJjKJ H(jjH$j jGKGKKJf2jb;j0hb h HiiJJJKJ(JKJGhedjXjH\j1G`jaHJijbGnjVqHJKG8IpJGGtxxHJGXGGJGGGIJVG|J쫠GԫGVGHȫXJGI̫Jī HثGXGܫG(JGGXIpKVVGGI8J IG0VGJ$II(xK,J 4xKV@XIpGPJGLlPG\JhJdIG`GXGTJxJ|JGtGGIHGIVGxKVЩDKVKVKV L"L-L* ߰ AȅĩLx* &ۥץ…  L) … IåLo# - VLx* p& I  A 6L*L5!` ~& < L# EL# ~&Υ <L# EL# Lx# A  6L* A b!G(Jbb4bbbbHJHVHJ Hb>b1HJJbJHbbGb(JAHbGb(JJJ(JGG cH cccGHxJGHpJGHhJGG,cH8c2cGH0JaJGccBcaIcczcjcRcPcHacVcJJHIJHdcGHIucPcpcaGJGHJIcJIHVccJJJ1JucPcpccecPcJJGcccJJHJJucPcJJeeQGJeQGJeQGee HeJGheeeQGJeJe9I8JfeQGeeJeYGfJ9I@IGJGefff>ffaIffefDdf(fffxfpfffbfBf>f:fHHHVKfFfHHKYfNfIHKVVGGJ^f9IhJHV!HHKlfIIJHtf9I HH|f9IHKfff?bfH!HHKlfGJf9IpJfffJJJH0KfH8cf?b:f!HJh1H@dK1HdK]ghhhVhhh h4hjhIJVh1H@dK1H@dK i4h hhjhIJiV1HdK1HdK!HJVg]g4h h0h h#iQI,i(iYGJ1H2iK9II!HJ S  "  Ðʠ)`8`ȱ L9" ) I h"  ߐť > z L  ¥2 f I _ S  &  ' aҠL"L) & &  * U ) r 7# ' eGhePeFe6e&e eedaIeedddddJdPcJGHI!HJdGJdJPcGHJdPcJ!HJeGJeYGeJH!HJdPcGaI*e-eH0eGPcI=ePcJH@eGJIKedGJIaI\eVe!HJPc_eHbeGJIJGeredeexeYGeJJc9I JaIePceHdc HeeGJGJJJGceeQGJeQGJeJ(JӢKʩ`˩ȩɠɱʑȈʑȥʩ˩©GL ̅ʩ˩© ʩG˥܅¥݅ ޅʥ߅˥¥ ʥ˥¥ ʥ˥¥ ʥ˥¥ ʥ˥¥ ȩɩʩ˩© LȑЅ˥ȥ`ȥ` ʥ`̥`ΥɑΥȑ`ΥˑΥʑ`ΥÑΥ‘`ΥΥ`ΥőΥđ`ΥǑΥƑ`Υ͑Υ̑`΅α΅`΅α΅`΅α΅`΅α΅ȱȑ`ʪȱʆʅ`ȥ`ȩG`ʩG`ʩG`ƩG`ƩG`ʅ`ȅ ` N `̅ȱ̅`̅ȱ̅`̅ȱ̅`̅ȱ̅`̅ȱ̅`̅ȱ̅`̅ȱ̅`̅ȱ̅`̅ȱ̅`̅ȱ̅`̅ȱ̅` ̅ȱ̅` 1 The SOFT WAREHOUSE Licensed by MICROSOFT, Inc. Յׅԭ 5 EȄʩɩ˱ȑ˥ɶL9WWab[[ ܩGݩ%ȩɠܑܥݑܘܩGܱȑ ȑ ȑܥɑ U吴ޅ E iȐɥ` ʑȥˑ` ȑȥɑ` ȑȥɑ`     ` ߰"L3 p&L3 %L* GL* p& ^L3 p&L* p& ^L* p&  Z)L*  L  qL  $L* ~& <LL&Lx*L L ! (1FALSE1TRUE1FUNCTION1SUBROUTINE*FIRST:RESTJSECONDPRRESTVTHIRD\RRRESTADJOIN2LISTREVERSEOBLIST+REPLACEF:REPLACERICONCATENeNAMEqINTEGERwATOMEMPTYPOSITIVENEGATIVEZERO`ȅ¥Ʌ`ȅĥɅ`ȅƥɅ`ʅȥ˅`ʅ¥˅`ʅƥ˅`…ȥÅ`…ʥÅ`…Å`…ĥÅ`ȥ`ĥ`ąŅ`ą̥Ņ`ƅȥDž`̅ʥͅ`̅ĥͅ`ޅʥ߅`  ʥ`  5!ȥ`ȥ`¥`ʥ˥ȥ`ʥ`¥`ʥ`ªȱ†…`…ȱ…`ʑȥˑ`‘ȥÑ`ƑȥǑ`ƑȥǑ`ȑȱȑ`ʑȱʑ`ʅȱʅ`ƅȱƅ`ȑȥɑ`ʑȥˑ`ʑȥˑ`ȑȱȑ`ȑȱȑ`ʑȱʑ`ȅȱȅ`ʪȱʆʅ`ʅȱʅ`ʑȥˑ`̱̱̅̅`̱̱̅̅`̠̅ɩG̱̅ȩ`̠̅˩G̱̅ʩ`̠̅éG̱̅©`̠̅G̱̅`̠̅ǩG̱̅Ʃ`  muSIMP-80 2.15 (03/01/82) APPLE ][ ADIOS Version Copyright (C) 198Lr*L*Ȅʩɩ˱ȑ˥ɶL ʪȱʆʅ` ʪȱʆʅ` :L- :L= PL- PL=  _  *  ' z  L5! L  _ r JA D 'ˑʑɑȑʥ` L     a`ȅʩGɅ ) ˥` ʥ˥¥ ʥ˥¥ ʥ˥¥ ȩɩʩ˩© Lȑ :2:2ͳ:_³ͯ !6! @!!BH @@ABH B! "BHI$$BI$BI $ HI ADCHAR1ECHO+WRS,PRINTLINE,PRINT%,NEWLINE<,SPACESS,LINELENGTHo,RADIX/TEXT /GRAPHICS.PLOTH/PADDLEf/BEEP2'IDENTITYEVALAPPLY2COND,3LOOPDRIVERRECLAIM/SAVEJ0LOADMEMORYSYSTEM5POP5PUSH````΅α΅`΅α΅`΅α΅` ȪȱȆȅ` ȅȱȅ` ȅȱȅ`ȅȱȅ`ȅȱȅ`ʅȱʅ` ʅȱʅ`ʅȱʅ`…ȱ…`…ȱ…̅ȱ̅` L Lȑȥɑ`ʑȥˑ`‘ȥÑ`ȩG`̩G`ȑ̥ɑ`ʑ̥ˑ`‘̥Ñ`̥`Ƒ̥Ǒ`̱̱̅̅`̱̱̅̅`̱̱̅̅`g߅ggigggg 0 HFΥϥ  L  /hȩI * ;L<HHHGHHHȍHHH ' r ' ' ;L  < HL;  <L; JA DLx*  & M  & ‘EVENEQ=MEMBERGREATERLESSERORDERPORDEREDNOT4AND 5ORASSIGNi5:ASSOC GETPUT GETD} PUTD MOVD"COMPRESS"EXPLODE #ASCIIK#LENGTHu#MINUS#PLUS#DIFFERENCEQ$TIMES$QUOTIENT=%MOD%DIVIDE'RDSP(SCAN'READ(REL ~& <L3  L   L 8`ߐ3/ߐ)% z k   A  S68`` I =㐭 ) > M - q  ` ) > - q   ) =`E ) > M - ) >    q   I =(8`iΐ } ) h S S6    (.&IƥĦĥŦťȦ…†ȥɦÅÆ 7L*L+% ~&A a&  ʦȅȆʥ˦ɅɆ˥ąĆŅņ  A ;8 L*L5!ąhL{*L* ~& a&H  g9 8ȥ  hL%h8LF' } )  A 6!   >  9 1 ʥA 0   -`  ʩĩŭ! ȅ ) o1  6  ȅ )  8 L' ` G 5. F  *ץʍHˍH` ((3 61  +L) 11) ȅYiʐ˥ѥ˥HHHGHH1HHHhʈ(iܐL*У`ĩ <đĥőĄť  8ąŅ <8ް HHHHHHHHhʈ  -LIIGߩ -  - h -   #  # #L-#"# IŭIGоH  v =   L L=L* i̐ h" JA j¥à˜ȑ >!…)iÅi8̰  L ߰-ߐ'㰘  & DLt ߰ ߰ `L* ߰ E1ɒG Lx*U ) M * r ' e   L"L-L* ߰ AȅĩLx* &ۥץ…  L) … IåLo# - VLx* p& I  A 6L*L5!` ~& < L# EL# ~&Υ <L# EL# Lx# A  6L* A } )ȍB& K&hH m% r B&  h  $  DL   hL 9GǠQʅƱ` ߐ'#` ߐߐ  `hhL*ߐ51+ v H rª±†…hé8`` &`߰ Z` > C)HHG 1)߅  D+`  End-Of-File Read 'HHG )ԩ`ՅIHHG #F F5 gELY) HFLFׅ8 )׭HHG -8`)`HHG(`(`  ( T1 ) e' *  zL( *  L* *ʍHˍH`  ,L-  ) ,L  * & -L*  &  -#Lr*" r*  & "`! r*  &%!`Q C( - ) M ,  IG'IIG#" -ʩ. - ,)L- -#e° " `ߐ``߰L8`ߐ   LqȥʦȅȆʥ˦ɅɆ˥ąĆŅņ A LS6ʥ˥8ʰ ) > D  `  2 =L   ) > S  q    2 =` D8`   =L5!  ˑL5!)6 b M. > S  "  Ðʠ)`8`ȱ L9" ) I h"  ߐť > z L  ¥2 f I _ S  &  ' aҠL"L) & &  * U ) r 7# ' e  } R78ąʥŅ L*ąLx* rh8L5! ~&KH g98ȥ K&h  q   A 7 <L*L* 5!LąhHĥi̐ {*8̰  h    r% L ~& a&H  g98ȥ  (L' (L'L( ( * )) r ' ' e ( ) rL)( ' z  5! -` ()8)  +L)))  (Lj( (Lj( )L(   )L( ( Y1 o1 h x*ʍHˍH`  () ()` ( C1` () ()` )  r JA D` < Y1 ) (- E ( ) Y1- )(`HHG  G" 5. F   No Disk Space ) ) ML L- 'L!ߐȅɅȅʥɅ` f I _ȥʥȱ ( ~  r S )  _ 9"   D D L5!˜ȑL5! f I S råLCȑ ! ' >! ʑHG 1 HHG F +HHGFLbF  ߰>߰8 A ߰.G a)[ 8@`8`` ) ; & …8`,-  f I M /-  /LE  f I M /,  /)G  /EG GEE-L3 f I _  ~( r D ; a 'G ' L< 'L*Ȧʅʆȥɦ˅ˆ f ߰ 1Z S0  0  0 L3 uSYS &  SYS file NOT foundL* 0 F̅ȩɩʩ 0 0 0  0  0  0  0  0L<`SYS ߰ Aʩ0 LM.  ` +L&  ` !܅ʥ݅` 1 1 1 _ r  ; a 'G ; IL<3 )L_3 ZE  )L_3 L* ʦȅȆʥ˦ɅɆ = ) f  ) ȥ ~! > = G   L2Ȧʅʆȥɦ˅ˆɥΠ3ΩӑL?L\3 ZE  _L3Ȧʅʆȥɦ˅ˆ ; ' ) M߰ )  =   > -  L f IG M߰ )  ;L6E?98ąȥŅɥ8ą¥Ņà ñĥ`  }ȅ  ĥ ` qȑ   }LR7 ¦ȅȆ¥æɅɆ`L88ąʥŅ˥8ąȥŅ } >ʪ   :ʥĥ   Ċ` A   h >8ʥ ʅŠ :  8 q   h >  8   S8ąȥŅ z8ąĥŅ  } }ʪȅ  : ^=LD<  мGж S =L>   йGг  =     ) S <   r * < ' . |<`G!  ~ I  G L .`LC?G$! > ~ I   G r L?L?Ȧʅʆȥɦ˅ˆ ; ' f IqLr* /L* 0 / 0RG(S I-P', -L*  &d0 Lr*  &ׅFF  &EEǠF0E WL. & d` & (` &0`8`HHG  , 0y Ft JA̅ȩɩʩ 0 0 0  0  0  L 7 DL;K2 *L:2 ) M r = ' e  ) -`L*  5! * _ r M ; ' e ' I  - `2)м f L f`2)П f  ) >  =  G ; Π2ΩL?`H f I _ M ; ' IG`F5) ) M =  G`L* _ M ; ' IG`5) f  ) > M = L ! .L5!)Н ML= f I r M ; 'L5) M߰ ~  L/ MߐL*-6) f `  8` } :  ĥ劑 ` eą¥eŅ S h > } )ʅ  > 8    .  ĥL8   } )  h >ȅ _  :qʑʐ  ĥߊ    .  ĥ  .Ј`ʦȅȆʥ˦ɅɆ˥߰f 1 q=¥HH`G <8°àHH`  G 0G* S ^=L>   GeGY *` f  I߰l 1 S =L>G3L?;G S ^=L> LL2G `0:`8`A[L 1a{L 1"% C1 ()`   ` 1 1 h o1! L 1 1880` ii0`2 V߰ DL=  &G r -Π1ΩۑL@LD<G r - @LD<  2 'Π>ΩL@  >>H+H¥HH`   L .`G:¥HH`G S @L>  ) M *L&2 ) ZE  оGи SΠ>ΩǑL@    ) S h?  *Π>ΩL? LD ܐ)۱ȅ ȱȅ I ) LD fܐ _ bܐ - `8܅ĥ݅ť8eĥeť8eĥeť8̅ͅeĥe`pIqIG GC: $ PE)KZZ[Р[rctcpGG1'GG1/GGr[6GGX[A GG*N(GG:V0GGJ]8GGPf@GGVnHGG\vPGGXGG2`GGhGGpGG+xGG:GGIGGeGGqGGwGGGGGGGGGGGG1IG1IG1IG1GG1 IG>a%IG[-G14hJG18JG1<JG1A JG[R(JG1ZеG&\^8JG1h@JG1mHJG1uPJG1~XJG1`JG\hJG1pJG1xJG1ЀJG:\ЈJG1АJG`ИJG1РJ1ШJG1аJص1иJG\J̲1JGENDLOOPENDBLOCKENDFUNENDSUBTERMINATOR;$&MATCHDELIMSYNTAXNOT FOUNDINFIXOPERATORLBPMATCHNOPPREFIXBADASSIGNMENTRBPUSED ASREADLIST.PUTPARSEPROPERTYDEFFUNWHENPARSEWHENBLOCKWITHOUTERR?@SYNTAX ERROR! CR <>+-*/^PRTSPAC = ) ȥ ~C > = G  )LQ@) -HH`Ȧʅʆȥɦ˅ˆɥΠ@ΩL?L?߰G L$ )%  ) M  r )  .`߰G 2 $LA )%  ) M LBȅɅL C JDiȐɥ ! JDiȐɥ3  ܐ - $٥ . LC #iʐ˥  L . D /A%  ALL Spaces ExhaustedLE `8``օ `NF # F`NF NF`  F F8`HHG h OF gEք F  h F  ` FL FLL   ` ```Eɨ(GG[ GG+HG,HG,"ZG%,*HG<,4IGS,=IGo,JIG/RIG /Y IG.d(IGH/k0IGf/t8IG2{@IGHIGPIGXIG2`IG,3hIG _pIGxIG/IGJ0IGIGIG5IG5IG\аIG1IG1 IG1IG1KG1KG1KGPcшZGZGZGZGZGZGZGZGZGZGZGZGZGZGZGPARSEMUSRPAR)LPAR(COMMA,BELLPRTMATHMAKDEFEX1EX2LEX1 *** REDEFINED: PUTPROPEX3DELIMITEREXIT .G߰  ; <` ~   G <)'  ~   G <) .`G@G ~    G ) ~    G )ʐ`߰   ; ` L;> ʦȅȆʥ˦ɅɆ = )V fʅ˅ 5!i8Ȱɠ))   } ) >  A 68ąŅ     8ʰL Biʐ˥ʅޥ˅ߥʥˠ) )LiȐɠ)Iȥ8ʰ˱I)Iʥ S 8܅ĥ݅ IE8ĥ IE8ĥ IE8̅ĥͅ IE D IELE  ` OF  INTERRUPT! Continue:  Executive: System:  F  FL<? FLE  ` FI'IЭЩѱБGG GGGGGG#GG,GG5HG?HG4EHG 5KHGP HGi5Y(HG]0HG e8HGk@HG qHHG} xPHG XHG"`HG"hHG #pHGK#xHGu#HG#HG#HGQ$HG$HG=%HG%GG'hJGP(HG'GG1JG1J൒1JG1JG]JG1JGj^KG1 KG^KG^KG1& KG1+(KG11GG198KG1=@KG1?GG1APKG1C`KG1R`KG1UhKGWpKGYxKG#[рKGp`]шKGQ$_ѐKG`aјKG1cѠKG`eѨKG`nѰKG1wѸKG`|GG1KG =  r )  .HH`8 i`$pI qIG E D©G  C  Ciåݥ   C .ȥɠ8Ȱɱ)LALB)ȥ8Ȱɱ) ZEPRTPARENLOP1PRTLISTPOINTNUMBERDENNUMPRTDIGxd2[HAHJI[JGN[J)G@[JJJGJ^[In[j[f[)GJ9IG!GJGJx[In[[f[9IGG\[[[[J9HJJ(J[[JIH[(J9HJJ[YH[YGJJG[]K1H@]K`````[`iKJ`1H@]K1H@]K`[qKJ`1H]K1H]KG8a4a a0aa aHIaI(a&a"a aa!HJV`KHI]`IJZZHIHKKJJG@c,cJb@b6b bbba^aVaKKJJaaa|anajaKIIJvaZ1H]KaIa a4a aaaIJaa1H@]K1H]K]`!HJV`IJZa1H@]KKI HaJG HXIKIJȲ`HHE` HHHaIZ`R`b_HV`IJ]`GJHPK!H0KGm`II0KG^~`x`HJJ``yHJGJG^`HJJGG`b_`HKGh^````[`iKJ`1H@JbHJJbbbbb!HJbKJHb9IKbbb0a!HKGqKJZGJ!HKG!HJcKJ!HJcKJ H(ccH$c cGKGKKJ_2c[;c0a[ a HbbJJJKJ(JKJGh^dcXcH\c1G`caHJic[GncZqHJKG8IpJGGtxxHJGXGGJGGGIJZG|J촠GԴGZGHȴXJGI̴JĴ HشGXGܴG(JGGXIpKZZGGI8J IG0ZGJ$II(xK,J 4xKZ@XIpGPJGLlPG\JhJdIG`GXGTJxJ|JGtGGIHGIZGxKZвDKZKZKZ L"L-L* ߰ AȅĩLx* &ۥץ…  L) … IåLo# - VLx* p& I  A 6L*L5!` ~& < L# EL# ~&Υ <L# EL# Lx# A  6L* A [!G(J[[4[[[[HJHZHJ H[>[1HJJ[JH[[G[(JAH[G[(JJJ(JGG \H \\\GHxJGHpJGHhJGG,\H8\2\GH0JaJG\\B\aI\\z\j\R\P\Ha\V\JJHIJHd\GHIu\P\p\aGJGHJI\JIHZ\\JJJ1Ju\P\p\\e\P\JJG\\\JJHJJu\P\JJ^^QGJ^QGJ^QG^^ H^JGh^^^QGJ^J^9I8J_^QG^^J^YG_J9I@IGJG^___>__aI__^_D]_(___x_p_f_b_B_>_:_HHHZK_F_HHKY_N_IHKZZGGJ^_9IhJHZ!HHKl_IIJHt_9I HH|_9IHK___?[_H!HHKl_GJ_9IpJ___JJJH0K_H8\_?[:_!HJa1H@]K1H]K]`aaaVaaa a4ajaIJZa1H@]K1H@]K b4a aajaIJbZ1H]K1H]K!HJV`]`4a a0a a#bQI,b(bYGJ1H2bK9II!HJ S  "  Ðʠ)`8`ȱ L9" ) I h"  ߐť > z L  ¥2 f I _ S  &  ' aҠL"L) & &  * U ) r 7# ' eGh^P^F^6^&^ ^^]aI^^]]]]]J]P\JGHI!HJ]GJ]JP\GHJ]P\J!HJ^GJ^YG^JH!HJ]P\GaI*^-^H0^GP\I=^P\JH@^GJIK^]GJIaI\^V^!HJP\_^Hb^GJIJG^r^]^^x^YG^JJ\9I JaI^P\^Hd\ H^^GJGJJJG\^^QGJ^QGJ^J(J% File TRACE.MUS (c) 10/01/81 The Soft Warehouse % MOVD ('FIRST, '#FIRST) $ MOVD ('ADJOIN, '#ADJOIN) $ MOVD ('EMPTY, '#EMPTY) $ MOVD ('ATOM, '#ATOM) $ MOVD ('MEMBER, '#MEMBER) $ MOVD ('EVAL, '#EVAL) $ MOVD ('APPLY, '#APPLY) $ MOVD ('POP, '#PO)), ENDFUN $ FUNCTION UNTRACE LEX1, LOOP WHEN #ATOM (LEX1) EXIT, UNTRACE1 (#POP (LEX1)), ENDLOOP, ENDFUN $ FUNCTION UNTRACE1 (FUNC, % Local: % FUNC#), FUNC#: COMPRESS (LIST (FUNC, ##)), WHEN GETD (FUNC#), MOVD (FUNC #PRINTLINE (']) EXIT, WHEN #ATOM (ARGS), ARGS: #EVAL (ARGS), LOOP BLOCK WHEN NOT MATHTRACE, #PRINT (#POP (ARGS)) EXIT, PRTMATH (#POP (ARGS), 0, 0), ENDBLOCK, WHEN #ATOM (ARGS) EXIT, #PRINT (COMMA), L (#POP (ARGS))), ENDBLOCK, WHEN FALSLST (ARGS) EXIT, #PRINT (COMMA), #SPACES (1), ENDLOOP, #PRINTLINE (']), ENDFUN $ FUNCTION FALSLST (ARGS), LOOP WHEN #EMPTY (ARGS) EXIT, WHEN #ATOM (ARGS), FALSE EXIT, WHENRACE: TRUE $ RDS () $ PREFIX BLOCK (COND ((EQ SCAN (' WHEN)) (ADJOIN (WHENPARSE (PARSE (SCAN) 0)) (MATCH (' ENDBLOCK))) ) ((SYNTAX)) ) ) % Local: % BODY, FUNC#), BODY: GETD (FUNC), WHEN #EMPTY (BODY), #PRINT ("UNDEFINED FUNCTION: "), #PRINTLINE (FUNC) EXIT, WHEN FUNC EQ ':, #PRINTLINE ("CANNOT TRACE ':'") EXIT, FUNC#: COMPRESS (LIST (FUNC, ##)), MOVD (FUNC, EXIT, #PRINT ("UNDEFINED FUNCTION: "), #PRINTLINE (FUNC), ENDFUN $ FUNCTION SUBR (FUNC), WHEN INTEGER (GETD (FUNC)), #EMPTY (FSUBR (FUNC)) EXIT, ENDFUN $ FUNCTION FSUBR (FUNC), #MEMBER (FUNC, '(LIST, COND, AND, OR, LOOP, PUSH, POPHEN #ATOM (ARGS), #EVAL (ARGS) EXIT, #ADJOIN (#EVAL (#POP (ARGS)), MKARGS# (ARGS)), ENDFUN $ FUNCTION PRTARGS# (FUNC, ARGS), #SPACES (INDENT), INDENT: #PLUS (INDENT, 1), #PRINT (FUNC), #SPACES (1), #PRINT ('[), WHEN #EMPTY (ARGS), RST (ARGS)), #PRINT (LPAR), LEX#: #EVAL (#POP (ARGS)), WHEN #EMPTY (LEX#), #PRINT (RPAR) EXIT, LOOP PRTMATH (#POP(LEX#), 0, 0), WHEN #EMPTY (LEX#), #PRINT (RPAR) EXIT, #PRINT (COMMA), #SPACES (1), ENDLOOP EXIT, #PRINT (#EVA INDENT: #PLUS (INDENT, -1), #SPACES (INDENT), #PRINT (FUNC), #SPACES (1), #PRINT ('=), #SPACES (1), WHEN NOT MATHTRACE, #PRINTLINE (RSLT) EXIT, PRTMATH (RSLT, 0, 0, TRUE), NEWLINE(), RSLT, ENDFUN $ INDENT: 0 $ MATHTP) $ MOVD ('PLUS, '#PLUS) $ MOVD ('PRINT, '#PRINT) $ MOVD ('PRINTLINE, '#PRINTLINE) $ MOVD ('SPACES, '#SPACES) $ FUNCTION TRACE LEX1, LOOP WHEN #ATOM (LEX1) EXIT, TRACE1 (#POP (LEX1)), ENDLOOP, ENDFUN $ FUNCTION TRACE1 (FUNC, 'FUNCTION, PUTD (FUNC, LIST ('FUNCTION, SECOND (BODY), LIST (TRACE#, FUNC, SECOND (BODY), FUNC#))) EXIT, WHEN #FIRST (BODY) = 'SUBROUTINE, PUTD (FUNC, LIST ('SUBROUTINE, SECOND (BODY), LIST (TRACE#, FUNC, SECOND (BODY), FUNC#)))#, FUNC), MOVD (FALSE, FUNC#) EXIT, ENDFUN $ SUBROUTINE TRACE# (FUNC, ARGS, FUNC#, LEX#), PRTARGS# (FUNC, ARGS), PRTRSLT# (FUNC, #APPLY (FUNC#, MKARGS# (ARGS))), ENDSUB $ FUNCTION MKARGS# (ARGS), WHEN #EMPTY (ARGS), FALSE EXIT, W #SPACES (1), ENDLOOP, #PRINTLINE (']) EXIT, LOOP BLOCK WHEN NOT MATHTRACE, #PRINT (#EVAL (#POP (ARGS))) EXIT, WHEN EXARG (#FIRST (ARGS)), PRTMATH (#EVAL (#POP (ARGS)), 0, 0) EXIT, WHEN LEXARG (#FI #EVAL (#POP (ARGS)), FALSE EXIT, ENDLOOP, ENDFUN $ FUNCTION EXARG (ARGS), #MEMBER (ARGS, '(EX1, EX2, EX3, EX4, EX5)), ENDFUN $ FUNCTION LEXARG (ARGS), #MEMBER (ARGS, '(LEX1, LEX2, LEX3, LEX4)), ENDFUN $ FUNCTION PRTRSLT# (FUNC, RSLT),FUNC#), WHEN SUBR (FUNC), PUTD (FUNC, LIST ('FUNCTION, 'ARG1, LIST (TRACE#, FUNC, 'ARG1, FUNC#))) EXIT, WHEN FSUBR (FUNC), PUTD (FUNC, LIST ('SUBROUTINE, 'ARG1, LIST (TRACE#, FUNC, 'ARG1, FUNC#))) EXIT, WHEN #FIRST (BODY) =% File ARITH.MUS (c) 07/21/82 The Soft Warehouse % % * * * muMATH Recognizer Utility Functions * * * % FUNCTION MULTIPLE (EX1, EX2), ZERO (MOD (EX1, EX2)) ENDFUN$ FUNCTION POSMULT (EX1, EX2), POSITIVE (EX1) AND ZERO (MOD (EX1), WHEN NEGCOEF (THIRD(EX1)), 1 EXIT, EX1 EXIT, WHEN PRODUCT (EX1), MKPROD (NUM1 (REST(EX1))) EXIT, EX1 ENDFUN$ FUNCTION NUM1 (LEX1), WHEN ATOM (LEX1), LEX1 EXIT, WHEN POWER(EX1:POP(LEX1)) AND NEGCOEF(THIRD(EX1)), NUM1(LEX1) EEN PRODUCT (EX1), WHEN INTEGER (SECOND(EX1)), WHEN RECIP (THIRD(EX1)), MKPROD (RRREST(EX1)) EXIT, MKPROD (RREST(EX1)) EXIT, WHEN RECIP (SECOND(EX1)), MKPROD (RREST(EX1)) EXIT, EX1 EXIT, WHEN RECIP (EX1), 1 EXIT, EX1 ENDF1 EXIT, THIRD (EX1) EXIT, 1 ENDFUN$ FUNCTION SIMPU (LOP1, EX1), WHEN NAME (EX1), LIST (LOP1, EX1) EXIT, WHEN APPLY (GET(LOP1,FIRST(EX1)), ARGEX(EX1)) EXIT, LIST (LOP1, EX1) ENDFUN$ % * * * Primitive Arithmetic Functions * * :EX2) ENDLOOP EXIT ENDFUN EXIT)$ FUNCTION LCM (EX1, EX2), ABS (EX2*(EX1/GCD(EX1,EX2))) ENDFUN$ % * * * muMATH Constructor Utility Functions * * * % FUNCTION SUB (EX1, EX2, EX3), WHEN EX1 = EX2, EX3 EXIT, WHEN ATOM (EX1), EXQ '^ ENDFUN$ FUNCTION NEGCOEF (EX1), WHEN INTEGER (EX1), NEGATIVE (EX1) EXIT, WHEN PRODUCT (EX1), NEGATIVE (SECOND(EX1)) EXIT ENDFUN$ FUNCTION DENOM (EX1), POWER (EX1) AND NEGCOEF (THIRD(EX1)) ENDFUN$ FUNCTION RECIP (EX1), WHEN POWEND NUMBER (EX2), LESSER (NUM(EX1)*DEN(EX2), NUM(EX2)*DEN(EX1)) EXIT ENDFUN$ FUNCTION > (EX1, EX2), EX2 < EX1 ENDFUN$ % * * * muMATH Selector Utility Functions * * * % FUNCTION NUM (EX1), WHEN ATOM (EX1), EX1 EXIT, WHEN POWER $ FUNCTION DEN1 (LEX1), WHEN ATOM (LEX1), LEX1 EXIT, WHEN POWER (EX1:POP(LEX1)) AND NEGCOEF (THIRD(EX1)), ADJOIN (SECOND(EX1)^-THIRD(EX1), DEN1(LEX1)) EXIT, DEN1 (LEX1) ENDFUN$ FUNCTION CODIV (EX1), WHEN INTEGER (EX1), 1 EXIT, WHEX1) EXIT, 1 EXIT, WHEN RECIP (EX1), EX1 EXIT, 1 ENDFUN$ FUNCTION BASE (EX1), WHEN POWER (EX1), WHEN RECIP (EX1), EX1 EXIT, SECOND (EX1) EXIT, EX1 ENDFUN$ FUNCTION EXPON (EX1), WHEN POWER (EX1), WHEN RECIP (EX1), -EX1 EXIT, SIMPU ('ABS, EX1) ENDFUN$ COND (WHEN NOT GETD('GCD), FUNCTION GCD (EX1, EX2), WHEN INTEGER (EX1) AND INTEGER (EX2), LOOP WHEN ZERO (EX2), WHEN POSITIVE (EX1), EX1 EXIT, MINUS (EX1) EXIT, EX2: MOD (EX1, EX1(EX1, EX2)) ENDFUN$ FUNCTION NEGMULT (EX1, EX2), NEGATIVE (EX1) AND ZERO (MOD (EX1, EX2)) ENDFUN$ FUNCTION SUM (EX1), FIRST(EX1) EQ '+ ENDFUN$ FUNCTION PRODUCT (EX1), FIRST(EX1) EQ '* ENDFUN$ FUNCTION POWER (EX1), FIRST(EX1) E1 = EX2, FALSE EXIT, WHEN ATOM(EX1) EXIT, LOOP WHEN NOT FREE(POP(EX1),EX2), FALSE EXIT, WHEN ATOM(EX1) EXIT ENDLOOP ENDFUN$ FUNCTION < (EX1, EX2), WHEN INTEGER(EX1) AND INTEGER(EX2), LESSER (EX1, EX2) EXIT, WHEN NUMBER (EX1) AXIT, ADJOIN (EX1, NUM1 (LEX1)) ENDFUN$ FUNCTION DEN (EX1), WHEN ATOM (EX1), 1 EXIT, WHEN POWER (EX1), WHEN NEGCOEF(THIRD(EX1)), SECOND(EX1)^-THIRD(EX1) EXIT, 1 EXIT, WHEN PRODUCT (EX1), MKPROD (DEN1 (REST(EX1))) EXIT, 1 ENDFUNUN$ FUNCTION COEFF (EX1), WHEN INTEGER (EX1), EX1 EXIT, WHEN PRODUCT (EX1), WHEN INTEGER (SECOND(EX1)), WHEN RECIP (THIRD(EX1)), LIST ('*, SECOND(EX1), THIRD(EX1)) EXIT, SECOND (EX1) EXIT, WHEN RECIP (SECOND(EX1)), SECOND (* % FUNCTION MIN (EX1, EX2), WHEN EX1 = EX2, EX1 EXIT, WHEN NUMBER (EX1) AND NUMBER (EX2), WHEN EX1 < EX2, EX1 EXIT, EX2 EXIT, LIST ('MIN, EX1, EX2) ENDFUN$ FUNCTION ABS (EX1), WHEN NUMBER (EX1), WHEN 0 < EX1, EX1 EXIT, R(EX1) AND INTEGER(SECOND(EX1)), THIRD(EX1) EQ -1 EXIT ENDFUN$ FUNCTION NUMBER (EX1), WHEN INTEGER (EX1) OR RECIP (EX1) EXIT, WHEN PRODUCT (EX1) AND ATOM (RRREST(EX1)), RECIP (THIRD(EX1)) EXIT ENDFUN$ FUNCTION FREE (EX1, EX2), WHEN EX1 EXIT, ADJOIN (SUB (POP(EX1), EX2, EX3), SUB (EX1, EX2, EX3)) ENDFUN$ FUNCTION EVSUB (EX1, EX2, EX3), EVAL (SUB (EX1, EX2, EX3)) ENDFUN$ FUNCTION ARGEX (EX1), WHEN ATOM (RRREST (EX1)), REST (EX1) EXIT, LIST (SECOND (EX1), ADJOIN (FIRST ADJOIN(EX1,ARGLIST(EX2))) EXIT, WHEN ATOM (EX2), WHEN INTEGER (EX2), WHEN ZERO (EX2), EX1 EXIT, WHEN NUMBER (EX1), MKRAT (PLUS(NUM(EX1),TIMES(EX2,DEN(EX1))), DEN(EX1)) EXIT, APPLY (GET('+,FIRST(EX1)), ADJOIN(EX2,ARGLIST(EX1)T, EX3: CODIV (FIRST(LEX1)), WHEN EX2 = EX3, EX1: ADDTERMS (COEFF(EX1), COEFF(POP(LEX1))), WHEN ZERO (EX1), LEX1 EXIT, ADJOIN (EX1*EX2, LEX1) EXIT, WHEN ORDERED (EX2, EX3), ADJOIN (EX1, LEX1) EXIT, ADJOIN (POP(LEX1), INJECTELOOP LEX1: MERGETERM (POP(LEX2), LEX1), WHEN ATOM (LEX2), LEX1 EXIT ENDLOOP EXIT, MERGETERM (EX1, LEX1) ENDFUN$ FUNCTION SUMLEX (LEX1, % Local: % LEX2), LOOP LEX2: MERGESUM (POP(LEX1), LEX2), WHEN ATOM (LEX1), % X1 EQ 1, EX2 EXIT, WHEN ATOM (EX2), FALSE EXIT, APPLY (GET('*,FIRST(EX2)), ADJOIN(EX1,ARGLIST(EX2))) EXIT, WHEN ATOM (EX2), WHEN ZERO (EX2), 0 EXIT, WHEN EX2 EQ 1, EX1 EXIT EXIT, APPLY (GET('*,FIRST(EX2)), ADJOIN(EX1,AX1) ENDFUN$ FUNCTION MKPROD (LEX1), WHEN ATOM (LEX1), 1 EXIT, WHEN ATOM (REST(LEX1)), FIRST (LEX1) EXIT, ADJOIN ('*, LEX1) ENDFUN$ FUNCTION MKRAT (EX1, EX2), WHEN EX1 EQ 1, LIST ('^, EX2, -1) EXIT, LIST ('*, EX1, LIST ('^, EX2, -1)) ALSE EXIT, WHEN NUMBER (EX2), MKRAT (PLUS(NUM(EX2),TIMES(EX1,DEN(EX2))), DEN(EX2)) EXIT, APPLY (GET('+,FIRST(EX2)), ADJOIN(EX1,ARGLIST(EX2))) EXIT, WHEN ATOM (EX2), WHEN ZERO (EX2), EX1 EXIT EXIT, APPLY (GET('+,FIRST(EX2)), WHEN APPLY (GET('+,FIRST(EX1)), ADJOIN(EX2,ARGLIST(EX1))) EXIT, APPLY (GET('+,FIRST(EX2)), ADJOIN(EX1,ARGLIST(EX2))) ENDFUN$ FUNCTION INJECTERM (LEX1), % Fluid vars from MERGETERM: EX1, EX2=CODIV(EX1), EX3 % WHEN ATOM (LEX1), LIST (EX1) EXIEX3, REVERSE(LEX3,LEX2)) EXIT, PUSH (EX2, LEX3) ENDLOOP ENDFUN$ FUNCTION MERGESUM (EX1, LEX1, % Local: % LEX2), WHEN ATOM (LEX1), WHEN SUM (EX1), REST (EX1) EXIT, LIST (EX1) EXIT, WHEN SUM (EX1), LEX2: REST (EX1), , -1*EX1 EXIT, EX1 + -EX2 ENDFUN$ % * * * muMATH Multiplication Routines * * * % FUNCTION MULTFACTS (EX1, EX2), WHEN ATOM (EX1), WHEN INTEGER (EX1), WHEN TIMES (EX1, EX2) EXIT, WHEN ZERO (EX1), 0 EXIT, WHEN E(EX1), RREST(EX1))) ENDFUN$ FUNCTION ARGLIST (EX1), WHEN PRODUCT (EX1) OR SUM (EX1), LIST (REST(EX1)) EXIT, REST (EX1) ENDFUN$ FUNCTION MKSUM (LEX1), WHEN ATOM (LEX1), 0 EXIT, WHEN ATOM (REST(LEX1)), FIRST (LEX1) EXIT, ADJOIN ('+, LE WHEN EX2 EQ 1, QUOTIENT (EX1, EX3) EXIT, MKRAT (QUOTIENT(EX1,EX3), EX2) ENDFUN$ FUNCTION ADDTERMS (EX1, EX2), WHEN ATOM (EX1), WHEN INTEGER (EX1), WHEN PLUS (EX1, EX2) EXIT, WHEN ZERO (EX1), EX2 EXIT, WHEN ATOM (EX2), F)) EXIT, APPLY (GET('+,FIRST(EX1)), ADJOIN(EX2,ARGLIST(EX1))) EXIT, WHEN NUMBER (EX1) AND NUMBER (EX2), RATSUM ( PLUS (TIMES(NUM(EX1),DEN(EX2)), TIMES(NUM(EX2),DEN(EX1))), TIMES (EX1:DEN(EX1), EX2:DEN(EX2)), GCD (EX1, EX2) ) EXIT, RM (LEX1)) ENDFUN$ FUNCTION MERGETERM (EX1, LEX1, % Local: % EX2, EX3, LEX2, LEX3), LEX2: LEX1, LOOP WHEN ATOM (LEX2), EX2: CODIV (EX1), INJECTERM (LEX1) EXIT, WHEN EX3: ADDTERMS (EX1, EX2:POP(LEX2)), MERGESUM (When the end of LEX1 is reached, % MKSUM (LEX2) EXIT % make a sum of LEX2 and return. % ENDLOOP ENDFUN$ FUNCTION + LEX1, % Nary plus function % SUMLEX (LEX1) ENDFUN$ FUNCTION - (EX1, % Optional: % EX2), WHEN EMPTY (EX2) ENDFUN$ % * * * muMATH Summation Routines * * * % FUNCTION RATSUM (EX1, EX2, EX3), WHEN EX3 EQ 1, MKRAT (EX1, EX2) EXIT, EX1: QUOTIENT (EX1, EX3), EX2: QUOTIENT (EX2, EX3), EX3: GCD (EX1, EX3), EX2: QUOTIENT (EX2, EX3), RGLIST(EX2))) EXIT, WHEN ATOM (EX2), WHEN INTEGER (EX2), WHEN ZERO (EX2), 0 EXIT, WHEN EX2 EQ 1, EX1 EXIT, APPLY (GET('*,FIRST(EX1)), ADJOIN(EX2,ARGLIST(EX1))) EXIT, APPLY (GET('*,FIRST(EX1)), ADJOIN(EX2,ARGLIST(EX1))) EXI(EX2, LEX3) ENDLOOP ENDFUN$ FUNCTION MERGEPROD (EX1, LEX1, % Local: % LEX2), WHEN ATOM (LEX1), WHEN PRODUCT (EX1), REST (EX1) EXIT, LIST (EX1) EXIT, WHEN PRODUCT (EX1), LEX2: REST (EX1), LOOP LEX1: MERGEFACT (POPIST ('?, EX1) ENDFUN$ FUNCTION / (EX1, EX2), WHEN ZERO (EX2), ?(LIST('/, EX1, EX2)) EXIT, EX1 * EX2^-1 ENDFUN$ % * * * muMATH Power Routines * * * % FUNCTION SQUARE (EX1), % SQUARE is redefined in ALGEBRA % EX1*EX1 ENDFUN$ GEXPD: 0$ LOGEXPD: 0$ LOGBAS: #E$ FLAGS: '(TRGEXPD LOGEXPD LOGBAS ZEROBASE ZEROEXPT POINT)$ FUNCTION ^ (EX1, EX2), WHEN INTEGER (EX2), WHEN INTEGER (EX1), WHEN EX1 EQ 1, 1 EXIT, WHEN ZERO(EX1) AND ZERO(EX2), ?(LIST('^, EWHEN ATOM (EX1), LIST ('^, EX1, EX2) EXIT, WHEN APPLY (GET('BASE,FIRST(EX1)), ADJOIN(EX2,ARGEX(EX1))) EXIT, LIST ('^, EX1, EX2) EXIT, WHEN ATOM (EX1), WHEN EX1 EQ 1, 1 EXIT, WHEN ZERO (EX1), WHEN EX2 < 0, ? (LIST('^, EX1, EX2), % If no common BASE or combination % WHEN INTEGER(EX1), ADJOIN(EX1,LEX1) EXIT, WHEN RECIP (EX1), WHEN INTEGER (EX3:FIRST(LEX1)), ADJOIN (EX3, ADJOIN (EX1, REST(LEX1))) EXIT, ADJOIN (EX1, LEX1) EXIT, LEX3: FALSE, % of EX1 N ORDERED (EX2, EX4) AND NOT RECIP (EX3), REVERSE (LEX3, ADJOIN (EX1, LEX1)) EXIT, PUSH (EX3, LEX3), LEX1: REST (LEX1) ENDLOOP EXIT, WHEN EX3: MULTFACTS (EX1, EX2:POP(LEX2)), MERGEPROD (EX3, REVERSE(LEX3,LEX2)) EXIT, PUSH PROD (LEX2) EXIT % make a product of LEX2 and return.% ENDLOOP ENDFUN$ FUNCTION * LEX1, % Nary product function. % PRODLEX (LEX1) ENDFUN$ FUNCTION ? (EX1), PRINT (" *** WARNING: "), PRTMATH (EX1, 0, 0, TRUE), NEWLINE (), L(EX1,EX1) ENDLOOP EXIT, LOOP BLOCK WHEN REST(EX2:DIVIDE(EX2,2)) EQ 1, EX3: EX1*EX3 EXIT ENDBLOCK, WHEN ZERO (EX2:FIRST(EX2)), EX3 EXIT, EX1: SQUARE(EX1) ENDLOOP ENDFUN$ ZEROBASE: FALSE$ ZEROEXPT: TRUE$ TR^, EX1, -1) EXIT, EXPT (EX1, EX2) EXIT, WHEN EX2 EQ 1, EX1 EXIT, WHEN ZERO (EX2) AND ZEROEXPT, 1 EXIT, WHEN EX1 EQ #I, EX2: MOD (EX2, 4), WHEN EX2 EQ 2, -1 EXIT, WHEN EX2 EQ 3, -#I EXIT, EX1^EX2 EXIT, T, WHEN APPLY (GET('*,FIRST(EX1)), ADJOIN(EX2,ARGLIST(EX1))) EXIT, APPLY (GET('*,FIRST(EX2)), ADJOIN(EX1,ARGLIST(EX2))) ENDFUN$ FUNCTION MERGEFACT (EX1, LEX1, % Local: % EX2, EX3, EX4, LEX2, LEX3), LEX2: LEX1, LOOP WHEN ATOM (LEX2)AND NUMBER (EX3), EX1: EX2 ^ ADDTERMS (EX4, EX3), MERGEPROD (EX1, REVERSE (LEX3, REST(LEX1))) EXIT, WHEN ORDERED (EX4, EX3), REVERSE (LEX3, ADJOIN(EX1, LEX1)) EXIT, REVERSE (LEX3, ADJOIN (POP(LEX1), ADJOIN(EX1,LEX1))) EXIT, WHE(LEX2), LEX1), WHEN ATOM (LEX2), LEX1 EXIT ENDLOOP EXIT, MERGEFACT (EX1, LEX1) ENDFUN$ FUNCTION PRODLEX (LEX1, LEX2), LOOP LEX2: MERGEPROD (POP(LEX1), LEX2), WHEN ATOM (LEX1), % When the end of LEX1 is reached, % MK FUNCTION EXPT (EX1, EX2, % Local: % EX3), EX3: 1, WHEN INTEGER (EX1), LOOP BLOCK WHEN REST(EX2:DIVIDE(EX2,2)) EQ 1, EX3: TIMES(EX1,EX3) EXIT ENDBLOCK, WHEN ZERO (EX2:FIRST(EX2)), EX3 EXIT, EX1: TIMESX1, EX2)) EXIT, WHEN NEGATIVE (EX2), WHEN ZERO (EX1), ?(LIST('^, EX1, EX2)) EXIT, EX1: EXPT (EX1, MINUS(EX2)), WHEN NEGATIVE (EX1), WHEN EX1 EQ -1, -1 EXIT, LIST ('*, -1, LIST('^,MINUS(EX1),-1)) EXIT, WHEN EX1 EQ 1, 1 EXIT, LIST ('in LEX1 found, insert EX1 % EX2: BASE (EX1), LOOP % in LEX1 in the proper order. % WHEN ATOM(LEX1), REVERSE (LEX3, LIST(EX1)) EXIT, WHEN EX2 = (EX4: BASE(EX3:FIRST(LEX1))), EX3: EXPON (EX3), WHEN NUMBER (EX4:EXPON(EX1)) ) EXIT, WHEN EX2 > 0 OR ZEROBASE, 0 EXIT, LIST ('^, EX1, EX2) EXIT, WHEN ATOM (EX2), WHEN EX1 EQ #E AND EX2 EQ #I AND NEGMULT(TRGEXPD,7), COS(1) + #I*SIN(1) EXIT, WHEN POSMULT(LOGEXPD,7) AND NOT(EX1=LOGBAS OR EX1<0), UN$ % * * * muMATH Algebraic Print Routines * * * % PROPERTY PRTMATH, *, FUNCTION (LEX1, % Local: % EX1, LEX2, LEX3), LOOP BLOCK WHEN DENOM (EX1:POP(LEX1)), BLOCK WHEN THIRD(EX1) EQ -1, EX1: SECOND(EX1) EXIT, EX1:), PRINT (LOP1), PRTSPACE (), WHEN ATOM (LEX1) EXIT, PRTMATH (EX1, GET('RBP,LOP1), GET('LBP,LOP1)) ENDLOOP, PRTMATH (EX1, GET('RBP,LOP1), 0), PRTPAREN (RPAR), TRUE EXIT, FALSE EXIT, PRTMATH (LIST ('/, MKPROD(REVE Local: % EX7), LOOP BLOCK WHEN ZERO (REST (EX7: DIVIDE(EX6,FIRST(LEX1)))), EX6: FIRST(EX7), WHEN (EX5:EX5+1) EQ EX3, EX4: EX4*FIRST(LEX1), EX5: 0 EXIT EXIT, EX5: 0, WHEN NOT (POP(LEX1) < FIRST(EX7)), EX6: 1 EXIT, X2*EX3/PION2/#I), #I^EX2 EXIT, WHEN NEGMULT(TRGEXPD,7), WHEN FREE (EX2: EX2*PION2, #I), COS(EX2) + #I*SIN(EX2) EXIT EXIT EXIT, WHEN INTEGER(EX1), WHEN PBRCH AND INTEGER(EX2), WHEN INTEGER(EX3:1/EX3), WHEN EX1 > 0, ROXIT, LIST ('^, EX1, EX2) EXIT, WHEN APPLY (GET('BASE,FIRST(EX1)), ADJOIN(EX2,ARGEX(EX1))) EXIT, WHEN POSMULT(LOGEXPD,7) AND NOT(EX1=LOGBAS OR NUMBER(EX2) OR EX1<0), LOGBAS ^ (EX2*LOG(EX1,LOGBAS)) EXIT, WHEN ATOM(EX2), LIST ('^, EX1, EX2) EXIT EXIT ENDFUN$ PBRCH: TRUE$ PUSH ('PBRCH, FLAGS)$ PROPERTY BASE, ^, FUNCTION (EX1, EX2, EX3), WHEN INTEGER (EX1) OR PBRCH, EX2^(EX1*EX3) EXIT ENDFUN$ PROPERTY BASE, *, FUNCTION (EX1, EX2, EX3), EX2^EX1 * EX3^EX1 ENDF PRTPAREN (LPAR), PRINT ('-), EX1: POP (LEX1), PRTSPACE (), WHEN ATOM (LEX1), PRTMATH (EX1, 130, 0), PRTPAREN (RPAR), TRUE EXIT, PRTMATH (EX1, 130, GET ('LBP, LOP1)), LOOP EX1: POP(LEX1), PRTSPACE (), RBP, LBP, PRTSPACE) EXIT, PRTMATH (LIST ('/, 1, LIST('^,EX1,-EX2)), RBP, LBP, PRTSPACE) EXIT ENDFUN$ % * * * Optional Fractional-power Package * * * % PRIMES: '(2, 3, 5)$ FUNCTION ROOT (EX1, EX2, EX3, LEX1, EX4, EX5, EX6, %EN EX6 EQ 1, EX1: EX1/(EX4^EX3), EX4: EX4^EX2, WHEN EX1 EQ 1, EX4 EXIT, EX4 * LIST ('^, EX1, EX2/EX3) EXIT ENDLOOP ENDFUN$ PION2: #PI/2$ PROPERTY EXPON, *, FUNCTION (EX1, EX2, EX3), WHEN EX1 EQ #E, WHEN INTEGER(EX2: E LOGBAS ^ (EX2*LOG(EX1,LOGBAS)) EXIT, LIST ('^, EX1, EX2) EXIT, WHEN APPLY (GET('EXPON,FIRST(EX2)), ADJOIN(EX1,ARGEX(EX2))) EXIT, WHEN POSMULT(LOGEXPD,7) AND NOT(EX1=LOGBAS OR NUMBER(EX2) OR EX1<0), LOGBAS ^ (EX2*LOG(EX1,LOGBAS)) EX3 EQ 1, FALSE EXIT, EX1: QUOTIENT (EX1, EX3), EX2: QUOTIENT (EX2, EX3), WHEN EX2 EQ 1, EX1 EXIT, EX2: LIST ('^, EX2, -1), WHEN EX1 EQ 1, EX2 EXIT, LIST ('*, EX1, EX2) EXIT, WHEN RECIP(EX1), LIST ('^, TIMES(EX2,SECOND(EX1)), -1) EXIT, LIST ('^, SECOND(EX1), -THIRD(EX1)) ENDBLOCK, PUSH (EX1, LEX3) EXIT, PUSH (EX1, LEX2) ENDBLOCK, WHEN ATOM (LEX1) EXIT ENDLOOP, WHEN ATOM (LEX3), EX1: FIRST (LEX2:REVERSE(LEX2)), LEX1: REST (LEX2), WHEN EX1 EQ -1, RSE(LEX2)), MKPROD(REVERSE(LEX3))), RBP, LBP, PRTSPACE), TRUE ENDFUN$ PROPERTY PRTMATH, ^, FUNCTION (LEX1, % Local: % EX1, EX2), EX1: FIRST (LEX1), WHEN NEGCOEF (EX2:SECOND(LEX1)), WHEN EX2 EQ -1, PRTMATH (LIST ('/, 1, EX1 WHEN ATOM(LEX1), EX7: EX3 - 1, LEX1: EX6, LOOP EX5: LEX1^EX7, WHEN NOT ((EX5:QUOTIENT(EX6+EX7*LEX1*EX5,EX3*EX5)) < LEX1) EXIT, LEX1: EX5 ENDLOOP, WHEN LEX1^EX3 EQ EX6, EX4: EX4*LEX1, EX6: 1 EXIT, EX6: 1 EXIT ENDBLOCK, WH EXIT, WHEN APPLY (GET('EXPON,FIRST(EX2)), ADJOIN(EX1,ARGEX(EX2))) EXIT, LIST ('^, EX1, EX2) ENDFUN$ PROPERTY *, ^, FUNCTION (EX1, EX2, EX3), WHEN EX3 EQ -1, WHEN INTEGER (EX2), WHEN INTEGER (EX1), EX3: GCD (EX1, EX2), WHEN EOT(EX1, EX2, EX3, PRIMES, 1, 0, EX1) EXIT, WHEN ZERO(MOD(EX3,2)), #I^(2*EX2/EX3)*ROOT(-EX1,EX2,EX3,PRIMES,1,0,-EX1) EXIT, (-1)^EX2 * ROOT(-EX1, EX2, EX3, PRIMES, 1, 0, -EX1) EXIT EXIT EXIT ENDFUN$ PROPERTY EXPON, ^, FUNCTION (EX1, EX2, EX3), RE (EX1, % Local: % LEX1, LEX2, LEX3), WHEN SUM (EX1), LEX1: REVERSE (REST(EX1)), LOOP LEX2: MERGESUM ((EX1:POP(LEX1))^2, LEX2), WHEN ATOM (LEX3:LEX1), MKSUM (LEX2) EXIT, EX1: 2*EX1, LOOP LEX2: MERGESUM (EX1*P1, LEX1, % Local: % NUMNUM, DENNUM, LEX2), LOOP LEX2: MERGESUM (EX1*POP(LEX1), LEX2), WHEN ATOM (LEX1), LEX2 EXIT ENDLOOP ENDFUN$ PROPERTY *, +, FUNCTION (EX1, LEX4, % Local: % LEX1, LEX2, LEX3), WHEN POSITIVE (NUMNUM) OR POS WHEN POSITIVE (DENNUM) AND DENNUM (EX1^-1), MKSUM (DISTRIB (EX1, LEX4, NUMNUM, DENNUM)) EXIT EXIT, WHEN POSITIVE (NUMNUM) AND NUMNUM (EX1), MKSUM (DISTRIB (EX1, LEX4, NUMNUM, DENNUM)) EXIT EXIT ENDFUN$ DENDEN: 6$ PUSH ('DENDEEXPON(EX1) + EX3) EXIT, WHEN NEGATIVE(EXPBAS) AND EXPBAS(EX3) AND EXPON(EX1) = EX3, (BASE(EX1) * EX2) ^ EX3 EXIT, WHEN EX3 EQ -1, WHEN INTEGER (EX2), WHEN INTEGER (EX1), EX3: GCD (EX1, EX2), WHEN EX3 EQ 1, FALSE EXIT, EX1: QUOT1, 0, -EX1) EXIT EXIT EXIT ENDFUN$ % * * * Optional Factorial Package * * * % FUNCTION ! (EX1, % Local: % EX2), WHEN ZERO (EX1) OR POSITIVE (EX1), EX2: 1, LOOP WHEN ZERO(EX1), EX2 EXIT, EX2: TIMES (EX1, EX2), PRINT ('-), EX1: -EX1 EXIT, PRINT (LOP1) ENDBLOCK, PRTSPACE (), WHEN ATOM (LEX1) EXIT, PRTMATH (EX1, GET('RBP,LOP1), GET('LBP,LOP1)) ENDLOOP, PRTMATH (EX1, GET('RBP,LOP1), 0), PRTPAREN (RPAR) ENDFUN$ FUNCTION SQUAXIT, MULTIPLE (NUMNUM, 3) ENDFUN$ DENNUM: 6$ PUSH ('DENNUM, FLAGS)$ FUNCTION DENNUM (EX1), WHEN INTEGER (EX1), MULTIPLE (DENNUM, 2) EXIT, WHEN SUM (EX1), MULTIPLE (DENNUM, 5) EXIT, MULTIPLE (DENNUM, 3) ENDFUN$ FUNCTION DISTRIB (EXUMNUM) AND NUMNUM (EX1), PUSH (EX1, LEX2) EXIT, PUSH (EX1, LEX3) ENDBLOCK, WHEN ATOM (LEX1) EXIT ENDLOOP, MERGEFACT (MKSUM (DISTRIB (MKPROD (REVERSE(LEX2)), LEX4, NUMNUM, DENNUM)), REVERSE (LEX3)) EXIT, WHEN DENOM (EX1),ULTIPLE (NUMDEN, 2) EXIT, WHEN SUM (EX1), MULTIPLE (NUMDEN, 5) EXIT, MULTIPLE (NUMDEN, 3) ENDFUN$ PROPERTY *, ^, FUNCTION (EX1, EX2, EX3, % Local: % LEX1, LEX2, LEX3), WHEN NEGATIVE(BASEXP) AND BASEXP(EX2) AND BASE(EX1) = EX2, EX2 ^ ( WHEN INTEGER(EX1), WHEN INTEGER(EX2), WHEN PBRCH AND EX3 EQ -1, WHEN EX1 > 0, ROOT (EX1, 1, EX2, PRIMES, 1, 0, EX1) EXIT, WHEN ZERO(MOD(EX2,2)), #I^(2/EX2) * ROOT(-EX1, 1, EX2, PRIMES, 1, 0, -EX1) EXIT, -ROOT(-EX1, 1, EX2, PRIMES, % File ALGEBRA.ARI (c) 01/28/82 The Soft Warehouse % PROPERTY PRTMATH, +, FUNCTION (LEX1, % Local: % EX1), PRTPAREN (LPAR), PRTMATH (POP(LEX1), 0, GET('LBP,LOP1)), LOOP PRTSPACE (), BLOCK WHEN NEGCOEF (EX1:POP(LEX1)), OP(LEX3), LEX2), WHEN ATOM (LEX3) EXIT ENDLOOP ENDLOOP EXIT, EX1*EX1 ENDFUN$ NUMNUM: 6$ PUSH ('NUMNUM, FLAGS)$ FUNCTION NUMNUM (EX1), WHEN INTEGER (EX1), MULTIPLE (NUMNUM, 2) EXIT, WHEN SUM (EX1), MULTIPLE (NUMNUM, 5) EITIVE (DENNUM), WHEN PRODUCT (EX1), LEX1: REST (EX1), LOOP EX1: POP(LEX1), BLOCK WHEN DENOM (EX1), WHEN POSITIVE (DENNUM) AND DENNUM (EX1^-1), PUSH (EX1, LEX2) EXIT, PUSH (EX1, LEX3) EXIT, WHEN POSITIVE (NN, FLAGS)$ FUNCTION DENDEN (EX1), WHEN INTEGER (EX1), MULTIPLE (DENDEN, 2) EXIT, WHEN SUM (EX1), MULTIPLE (DENDEN, 5) EXIT, MULTIPLE (DENDEN, 3) ENDFUN$ NUMDEN: 0$ PUSH ('NUMDEN, FLAGS)$ FUNCTION NUMDEN (EX1), WHEN INTEGER (EX1), M EX1: DIFFERENCE (EX1, 1) ENDLOOP EXIT, SIMPU ('!, EX1) ENDFUN$ PROPERTY LBP, !, 160$ RDS ()$ IENT (EX1, EX3), EX2: QUOTIENT (EX2, EX3), WHEN EX2 EQ 1, EX1 EXIT, EX2: LIST ('^, EX2, -1), WHEN EX1 EQ 1, EX2 EXIT, LIST ('*, EX1, EX2) EXIT, WHEN RECIP (EX1), LIST ('^, TIMES(EX2,SECOND(EX1)), -1) EXIT EXIT, WHEN SUM (EX2), NCTION BASEXP (EX1), WHEN NUMBER (EX1), MULTIPLE (BASEXP, 2) EXIT, WHEN PRODUCT (EX1), MULTIPLE (BASEXP, 5) EXIT, MULTIPLE (BASEXP, 3) ENDFUN$ PROPERTY EXPON, +, FUNCTION (EX1, EX2, EX3), WHEN POSITIVE (BASEXP) AND BASEXP (EX1), EX1^EX NUMNUM: 30, DENNUM: 30, WHEN POSITIVE (EX1), WHEN MULTIPLE (PWREXPD, 2), EXPT (EX2, EX1) EXIT EXIT, WHEN MULTIPLE (PWREXPD, 3), EXPT (EX2, -EX1) ^ -1 EXIT EXIT EXIT ENDFUN$ FUNCTION EXPAND (EX1, % Local: % PWREXPD, NRST(LEX1)), LEX1, LEX2) ENDFUN$ FUNCTION CONTENT1 (EX1, LEX1, LEX2, % Local: % EX2), WHEN ATOM (LEX2), CONTENT (LEX2, LEX1) EXIT, EX2: BASE (FIRST(LEX2)), WHEN EX1 = EX2, EX1: MIN (EXPON(POP(LEX1)), EXPON(POP(LEX2))), WHEN FIRST(NTENT1 (EX2, LEX2, LEX1) EXIT, EX2: POP(LEX2), WHEN DENOM (EX2) AND NEGATIVE (DENNUM) AND DENNUM (EX2^-1), ADJOIN (EX2, CONTENT1 (EX1, LEX1, LEX2)) EXIT, CONTENT1 (EX1, LEX1, LEX2) ENDFUN$ FUNCTION CANCEL (LEX1, LEX2), WHEN ATOM (LEX1) (EX3, LEX2) EXIT, LEX3: ADJOIN (EX1, LEX3) EXIT, WHEN POSITIVE (NUMDEN) AND NUMDEN (EX1), LEX2: ADJOIN (EX1^-1, LEX2) EXIT, LEX3: ADJOIN (EX1, LEX3) ENDBLOCK, WHEN ATOM (LEX1) EXIT ENDLOOP, MERGEFACT (LIST ('^, MK WHEN SUM (EX1), MULTIPLE (EXPBAS, 5) EXIT, MULTIPLE (EXPBAS, 3) ENDFUN$ PROPERTY BASE, *, FUNCTION (EX1, EX2, EX3), WHEN POSITIVE (EXPBAS) AND EXPBAS (EX1), EX2^EX1 * EX3^EX1 EXIT ENDFUN$ BASEXP: -30$ PUSH ('BASEXP, FLAGS)$ FU EX2: LIST ('+, EX2, EX3) ENDBLOCK, WHEN EX1 EQ -1, WHEN NEGATIVE (DENDEN) OR NEGATIVE (NUMDEN), NUMNUM: DENDEN, DENNUM: NUMDEN, EX2: EVAL (EX2), WHEN SUM (EX2), FALSE EXIT, EX2^-1 EXIT EXIT, WHEN POSITIVE (PWREXPD), ), WHEN ATOM (LEX1), WHEN ATOM (LEX2), FALSE EXIT, WHEN DENOM (FIRST(LEX2)) AND NEGATIVE (DENNUM) AND DENNUM (FIRST(LEX2)^-1), ADJOIN (POP(LEX2), CONTENT (FALSE, LEX2)) EXIT, CONTENT (FALSE, REST(LEX2)) EXIT, CONTENT1 (BASE(FI ADJOIN (EX2, CONTENT (LEX1, LEX2)) EXIT, CONTENT (LEX1, LEX2) EXIT, WHEN ORDERED (EX1, EX2), EX1: POP(LEX1), WHEN DENOM (EX1) AND NEGATIVE (DENNUM) AND DENNUM (EX1^-1), ADJOIN (EX1, CONTENT1 (EX2, LEX2, LEX1)) EXIT, CO WHEN POSITIVE (DENDEN) OR POSITIVE (NUMDEN), EX2: REST (EX2), WHEN PRODUCT (EX1), LEX1: REST (EX1), LOOP EX1: POP(LEX1), BLOCK WHEN DENOM (EX1), EX3: EX1^-1, WHEN POSITIVE (DENDEN) AND DENDEN (EX3), LEX2: ADJOINT, WHEN POSITIVE (NUMDEN) AND NUMDEN (EX1), LIST ('^, MKSUM(DISTRIB(EX1^-1,EX2,DENDEN,NUMDEN)), -1) EXIT EXIT EXIT EXIT ENDFUN$ EXPBAS: 30$ PUSH ('EXPBAS, FLAGS)$ FUNCTION EXPBAS (EX1), WHEN NUMBER (EX1), MULTIPLE (EXPBAS, 2) EXIT, 2 * EX1^EX3 EXIT ENDFUN$ PWREXPD: 0$ PUSH ('PWREXPD, FLAGS)$ PROPERTY BASE, +, FUNCTION (EX1, EX2, EX3, % Local: % NUMNUM, DENNUM), WHEN INTEGER (EX1), BLOCK WHEN SUM (EX3), EX2: ADJOIN ('+, ADJOIN (EX2, REST(EX3))) EXIT, UMNUM, DENDEN, DENNUM, NUMDEN, BASEXP, EXPBAS), PWREXPD: 6, NUMNUM: DENDEN: DENNUM: BASEXP: EXPBAS: 30, NUMDEN: 0, EVAL (EX1) ENDFUN$ %* * * Optional content factorization & common denominator pkg. * * *% FUNCTION CONTENT (LEX1, LEX2EX1) EQ 'MIN, CONTENT (LEX1, LEX2) EXIT, EX2: EX2^EX1, WHEN DENOM (EX2), WHEN NEGATIVE (DENNUM) AND DENNUM (EX2^-1), ADJOIN (EX2, CONTENT (LEX1, LEX2)) EXIT, CONTENT (LEX1, LEX2) EXIT, WHEN NEGATIVE (NUMNUM) AND NUMNUM (EX2),SUM ( DISTRIB (MKPROD(REVERSE(LEX2)), EX2, DENDEN, NUMDEN)), -1), REVERSE (LEX3)) EXIT, WHEN DENOM (EX1), EX3: EX1^-1, WHEN POSITIVE (DENDEN) AND DENDEN (EX3), LIST ('^, MKSUM(DISTRIB(EX3,EX2,DENDEN,NUMDEN)), -1) EXIT EXI, LEX2 EXIT, CANCEL1 (BASE(FIRST(LEX1)), LEX1, LEX2) ENDFUN$ FUNCTION CANCEL1 (EX1, LEX1, LEX2, % Local: % EX2), WHEN ATOM (LEX2), ADJOIN (EX1^-EXPON(POP(LEX1)), CANCEL (LEX1, LEX2)) EXIT, WHEN EX1 = (EX2:BASE(FIRST(LEX2))), EX1:) EXIT, WHEN RECIP (FIRST(LEX2)), BLOCK WHEN NEGATIVE (DENNUM) AND DENNUM (SECOND(FIRST(LEX2))), EX1: EX1 * FIRST(LEX2) EXIT ENDBLOCK, LEX2: REST (LEX2) EXIT ENDBLOCK, LEX1: CONTENT (LEX1, LEX2), WHEN EX1 EQ 1 AND A2: LIST ('^, EX2, EX3), WHEN EX1 EQ 1, FACTOR (LIST(EX2)) EXIT, WHEN PRODUCT (EX1), FACTOR (LIST(EX2), REST(EX1)) EXIT, FACTOR (LIST(EX2), LIST(EX1)) EXIT ENDFUN$ FUNCTION EXPD (EX1, % Local: % PWREXPD, NUMNUM, DENDEN, DENNUM, NU1) EXIT, BLOCK WHEN GREATER (SPACES(), EX1), NEWLINE () EXIT ENDBLOCK, PRINT (FIRST(LEX1)), PRINT (" = "), PRINT (EVAL(POP(LEX1))), SPACES (18 - MOD(SPACES(),18)) ENDLOOP, NEWLINE (), "" ENDFUN$ RDS ()$ OIN (POP(LEX2), CANCEL1 (EX1, LEX1, LEX2)) ENDFUN$ FUNCTION FACTOR (LEX1, LEX2, % Local: % LEX3, LEX4, EX1), EX1: 1, LEX3: LEX1, LEX4: LEX2, BLOCK WHEN INTEGER (FIRST(LEX1)), WHEN INTEGER (FIRST(LEX2)), BLOCK WHEN NEGAM (SECOND(FIRST(LEX1)), SECOND(FIRST(LEX2)))^-1 EXIT ENDBLOCK, LEX1: REST (LEX1), LEX2: REST (LEX2) EXIT, BLOCK WHEN NEGATIVE (DENNUM) AND DENNUM (SECOND(FIRST(LEX1))), EX1: EX1 * FIRST(LEX1) EXIT ENDBLOCK, LEX1: REST (LEX1GATIVE (DENNUM), WHEN EX1 EQ 1, FACTOR(LEX1) EXIT, WHEN PRODUCT(EX1), FACTOR (LEX1, REST(EX1)) EXIT, FACTOR (LEX1, LIST(EX1)) EXIT ENDFUN$ PROPERTY +, ^, FUNCTION (EX1, EX2, EX3), WHEN NEGATIVE (NUMNUM) OR NEGATIVE (DENNUM), EXXPD: NUMDEN: 0, DENNUM: BASEXP: -30, EXPBAS: 30, EVAL (EX1) ENDFUN$ % * * * Optional Flags Package * * * % FUNCTION FLAGS ( % Local: % LEX1, EX1), EX1: LINELENGTH()-18, LEX1: FLAGS, NEWLINE (), LOOP WHEN ATOM (LEX EXPD (LIST ('-, EXPON(POP(LEX2)), EXPON(POP(LEX1)))), WHEN ZERO (EX1), CANCEL (LEX1, LEX2) EXIT, ADJOIN (EX2^EX1, CANCEL (LEX1, LEX2)) EXIT, WHEN ORDERED (EX1, EX2), ADJOIN (EX1^-EXPON(POP(LEX1)), CANCEL (LEX1, LEX2)) EXIT, ADJEST (LEX1) EXIT, WHEN INTEGER (FIRST(LEX2)), LEX2: REST (LEX2) EXIT ENDBLOCK, BLOCK WHEN RECIP (FIRST(LEX1)), WHEN RECIP (FIRST(LEX2)), BLOCK WHEN NEGATIVE (DENNUM) AND DENNUM (SECOND(FIRST(LEX1))), EX1: EX1 * LCTOM (LEX1), FALSE EXIT, MKPROD (MERGEPROD (EX1, MERGEPROD (PRODLEX (ADJOIN (EX1^-1, CANCEL(LEX1,LEX3))) + PRODLEX (ADJOIN (EX1^-1, CANCEL(LEX1,LEX4))), LEX1))) ENDFUN$ PROPERTY +, *, FUNCTION (EX1, LEX1), WHEN NEGATIVE (NUMNUM) OR NEMDEN, BASEXP, EXPBAS), PWREXPD: 6, NUMNUM: DENDEN: EXPBAS: 30, DENNUM: BASEXP: -30, NUMDEN: 0, EVAL (EX1) ENDFUN$ FUNCTION FCTR (EX1, % Local: % PWREXPD, NUMNUM, DENDEN, DENNUM, NUMDEN, BASEXP, EXPBAS), NUMNUM: DENDEN: -6, PWRETIVE (NUMNUM) AND NUMNUM (FIRST(LEX1)), EX1: GCD (FIRST(LEX1), FIRST(LEX2)), WHEN NEGATIVE (FIRST (LEX1)) AND NEGATIVE (FIRST (LEX2)), EX1: MINUS(EX1) EXIT EXIT ENDBLOCK, LEX1: REST (LEX1), LEX2: REST (LEX2) EXIT, LEX1: R% File EQN.ALG (c) 04/21/81 The Soft Warehouse % FUNCTION MAPFUN (LOP1, LEX1), WHEN ATOM(LEX1), FALSE EXIT, ADJOIN (LOP1(POP(LEX1)), MAPFUN(LOP1,LEX1)), ENDFUN $ FUNCTION SIMPU (LOP1, EX1), WHEN NAME(EX1), LIST(LOP1,EX1) EXIT, ȱȆȅ`ȅȱȅ`ȅȱȅ`ȅȱȅ`ʅȱʅ`ʅȱʅ`…ȱ…`…ȱ…`ªȱ†…`ƅȱƅ`ȑȥɑ`ʑȥˑ`ʑȥˑ`ȑȱȑ`ȑȱȑ`ʑȱʑ`ȪȱȆȅ`ȅȱȅ`ȅȱȅ`ȅȱȅ`ȅȱȅ`ʪLF (EX1, % Local: % EX3, EX4, EX5, EX6), % Fluid vars from SOLVE & SOLEXP: INDET, EX2 % WHEN EX2 = INDET, LIST (INDET "==" EX1) EXIT, WHEN POWER (EX2), EX3: SECOND (EX2), EX4: THIRD (EX2), WHEN FREE (EX3, INDET), SOLEXP 2), 'INV)), SOLEXP (SECOND(EX2) - EVAL(LIST(EX6, EX1))) EXIT, WHEN PBRCH AND (EX6: GET(FIRST(EX2), 'PINV)), SOLEXP (SECOND(EX2) - EVAL(LIST(EX6, EX1))) EXIT, LIST (EX2 "==" EX1), ENDFUN $ #ARB: 1 $ FUNCTION SOLEXP (EX1, % Local: FREE(EX3,INDET), EX6: EX6+EX3 EXIT, EX4: EX5: 1, BLOCK WHEN PRODUCT(EX3), LEX4: REST(EX3) EXIT, LEX4: LIST(EX3) ENDBLOCK, LOOP EX3: POP(LEX4), BLOCK WHEN FREECTION (EX1, EX2, EX3), WHEN FIRST(EX1) = '"==", SECOND(EX1) + EX2 "==" THIRD(EX1) + EX3, EXIT, EX1 + EX2 "==" EX1 + EX3, ENDFUN $ PROPERTY *, "==", FUNCTION (EX1, EX2, EX3), WHEN FIRST(EX1) = '"==", SECOND(EX1) * EX2 "==" THIRD(EX1)ARSE (SCAN(), 80)) EXIT, LIST ('=, EX1, PARSE (SCAN, 80)), ENDFUN $ FUNCTION LN (EX1), LOG (EX1, #E), ENDFUN $ RDS () $ % File SOLVE.EQN (c) 04/21/81 The Soft Warehouse % FUNCTION UNION (LEX1, LEX2), WHEN ATOM(LEX1), LEX2 EXIT, WHEN MEMBER (FIRST(LEX1), LEX2), UNION (REST(LEX1), LEX2) EXIT, ADJOIN (POP(LEX1), UNION (LEX1, LEX2)), ENDFUN $ FUNCTION SO EX1: EX5 * EX1, ENDLOOP EXIT, WHEN FREE (EX4,INDET), SOLEXP (EX3 - EX1^(1/EX4)) EXIT, LIST (EX2 "==" EX1) EXIT, WHEN LOGARITHM (EX2) AND THIRD(EX2) EQ #E, SOLEXP (SECOND(EX2) - #E^EX1) EXIT, WHEN (EX6: GET(FIRST(EXPRODUCT(EX1), LEX1: REST(EX1) EXIT, LEX1: LIST(EX1) ENDBLOCK, LOOP EX1: NUM(EXPD(POP(LEX1))), BLOCK WHEN SUM(EX1), LEX3:REST(EX1), EX6:EX7:EX8:0, EX2:FALSE, LOOP EX3: POP(LEX3), BLOCK WHEN WHEN APPLY (GET(LOP1,FIRST(EX1)), ARGEX(EX1)) EXIT, WHEN MEMBER (FIRST(EX1), '("==" [ {)), ADJOIN (POP(EX1), MAPFUN(LOP1,EX1)) EXIT, LIST (LOP1, EX1), ENDFUN $ PROPERTY RBP, "==", 80 $ PROPERTY LBP, "==", 80 $ PROPERTY +, "==", FUN EX2, EX3), EX1 ^ EX2 "==" EX1 ^ EX3, ENDFUN $ PROPERTY LOG, "==", FUNCTION (EX1, EX2, EX3), LOG (EX2,EX1) "==" LOG (EX3,EX1), ENDFUN $ PROPERTY INFIX, =, EQPARSE (SCAN) $ FUNCTION EQPARSE (EX2), WHEN EX2 EQ '=, LIST ('"==", EX1, Pʆʅ`ʅȱʅ`ʅȱʅ`ʅȱʅ`ʑȥˑ`ȑȱȑ`ȪȱȆȅ`ȅȱȅ`ȅȱȅ`ʅȱʅ`ʪȱʆʅ`ʅȱʅ`ªȱ†…`ȥ`ȩG`ʩG`ʩG`ƩG`ƩG`ʅ`ȅ `  `̅ȱ̅`̅(EX4 - LOG(EX1,EX3)) EXIT, WHEN NUMBER (EX4), EX1: EX1 ^ (1/EX4), EX4: NUM (EX4), EX5: #E ^ (2*#I*#PI/EX4), LOOP EX6: UNION (SOLEXP(EX3-EX1), EX6), EX4: EX4 - 1, WHEN ZERO (EX4), EX6, EXIT, % EX2, EX3, EX4, EX5, EX6, EX7, EX8, LEX1, LEX2, LEX3, LEX4), EX1: NUM (FCTR(EX1)), BLOCK WHEN SUM(EX1), EX1: NUM(EXPD(EX1)) EXIT, ENDBLOCK, WHEN ZERO(EX1), LIST(INDET "==" ARB(#ARB)) EXIT, WHEN FREE(EX1, INDET), FALSE EXIT, BLOCK WHEN * EX3, EXIT, EX1 * EX2 "==" EX1 * EX3, ENDFUN $ PROPERTY BASE, "==", FUNCTION (EX1, EX2, EX3), WHEN FIRST(EX1)='"==", EX2^SECOND(EX1) "==" EX3^THIRD(EX1) EXIT, EX2 ^ EX1 "==" EX3 ^ EX1, ENDFUN $ PROPERTY EXPON, "==", FUNCTION (EX1,(EX3, INDET), EX4: EX4*EX3 EXIT, EX5: EX5*EX3 ENDBLOCK, WHEN ATOM(LEX4), EXIT ENDLOOP, WHEN EMPTY(EX2), EX7: EX4, EX2: EX5 EXIT, WHEN EX5 = EX2, EX7: EX7+EX4 EXIT, $ PROPERTY ASIN, INV, SIN $ PROPERTY ACOS, INV, COS $ PROPERTY ACOT, INV, COT $ PROPERTY ASEC, INV, SEC $ PROPERTY ACSC, INV, CSC $ PROPERTY TAN, PINV, ATAN $ PROPERTY SIN, PINV, ASIN $ PROPERTY COS, PINV, ACOS $ PROPERTY COT, PINV, ACOT $ PRO1), 0, 0), WHEN ATOM (LEX1), PRINT (']) EXIT, PRINT (", "), ENDLOOP, ENDFUN $ FUNCTION ROW (EX1), FIRST (EX1) EQ '[, ENDFUN $ FUNCTION ARGLIST(EX1), WHEN MEMBER (POP(EX1), '(+ * [ {)), LIST (EX1) EXIT, EX1, ENDFUN $ WHEN ATOM (LEX2), FALSE EXIT, ADJOIN (POP(LEX1)*POP(LEX2), MAPMULT2(LEX1,LEX2)), ENDFUN $ PROPERTY *, [, FUNCTION (EX1, LEX1), WHEN ROW (EX1), ADJOIN ('[, MAPMULT2(REST(EX1),LEX1)) EXIT, ADJOIN ('[, MAPMULT1(LEX1)), ENDFUN $ FUNCT ADJOIN ('[, MAPEXPON(LEX1)), ENDFUN $ FUNCTION MAPBASE (LEX1), % Fluid var from property "EXPON[" or "EXPON{": EX1 % WHEN ATOM (LEX1), FALSE EXIT, ADJOIN (EX1^POP(LEX1), MAPBASE(LEX1)), ENDFUN $ PROPERTY EXPON, [, FUNCTION (EX1, LEX1), WHEN ZERO(EX8), EX1: SOLF (-EX6/EX7) EXIT, EX7: -EX7/(2*EX8), EX6: EX6/EX8, EX8: (EX7^2 - EX6)^(1/2), EX1: UNION (SOLF(EX7+EX8), SOLF(EX7-EX8)) EXIT ENDLOOP EXIT, WHEN NOT FREE(EX1,ID: LOGEXPD: -30, TRGSQ: 1, WHEN EMPTY(EX1) OR EMPTY(INDET), ? (LIST(SOLVE, EX1, INDET)) EXIT, WHEN FIRST(EX1) EQ '"==", ADJOIN ('{, SOLEXP (SECOND(EX1)-THIRD(EX1))) EXIT, ADJOIN ('{, SOLEXP(EX1)), ENDFUN $ PROPERTY ATAN, INV, TAN% File: ARRAY.ARI (c) 03/26/82 The Soft Warehouse % PROPERTY PREFIX, [, ADJOIN ('[, MATCH('])) $ PUSH ('], DELIMITER) $ PROPERTY PRTMATH, [, FUNCTION (LEX1), PRINT ('[), WHEN ATOM (LEX1), PRINT (']) EXIT, LOOP PRTMATH (POP(LEXEX1)) EXIT, ENDFUN $ FUNCTION MAPMULT1 (LEX1), % Fluid var from property "*[" or "*{": EX1 % WHEN ATOM (LEX1), FALSE EXIT, ADJOIN (EX1*POP(LEX1), MAPMULT1(LEX1)), ENDFUN $ FUNCTION MAPMULT2 (LEX1, LEX2), WHEN ATOM (LEX1), FALSE EXIT, OR COL (EX1), ENDFUN $ FUNCTION ARGEX(EX1), WHEN ARRAY (EX1), LIST(REST(EX1)) EXIT, WHEN ATOM (RRREST(EX1)), REST(EX1) EXIT, LIST(SECOND(EX1), ADJOIN(FIRST(EX1), RREST(EX1))), ENDFUN $ PROPERTY BASE, [, FUNCTION (EX1, LEX1), WHEN EX5 = EX2^2, EX8: EX8+EX4 EXIT, WHEN EX5^2 = EX2 AND ZERO(EX8), EX8:EX7, EX7:EX4, EX2:EX5 EXIT, EX2: 0 ENDBLOCK, WHEN ZERO(EX2), EX1: LIST (EX1 "==" 0) EXIT, WHEN ATOM (LEX3), RINT ('}) EXIT, EX1: SPACES (), LOOP PRTMATH (POP(LEX1), 0, 0, TRUE), WHEN ATOM (LEX1) EXIT, PRINTLINE (COMMA), SPACES (EX1), ENDLOOP, PRINT ('}), ENDFUN $ FUNCTION SOLVE (EX1, INDET, TRGSQ, TRGEXPD, LOGEXPD), TRGEXPPERTY SEC, PINV, ASEC $ PROPERTY CSC, PINV, ACSC $ RDS() $  ڸx8`-0ݩ?ʥD EEE`   D#-EEE8` D ڸx D - FUNCTION MAPADD2 (LEX1, LEX2), WHEN ATOM (LEX1), LEX2 EXIT, WHEN ATOM (LEX2), LEX1 EXIT, ADJOIN (POP(LEX1)+POP(LEX2), MAPADD2(LEX1,LEX2)), ENDFUN $ PROPERTY +, [, FUNCTION (EX1, LEX1), WHEN ROW (EX1), ADJOIN('[, MAPADD2(REST(EX1),LION MAPEXPON (LEX1), % Fluid var from property "BASE[" or "BASE{": EX1 % WHEN ATOM (LEX1), FALSE EXIT, ADJOIN (POP(LEX1)^EX1, MAPEXPON(LEX1)), ENDFUN $ FUNCTION COL (EX1), FIRST (EX1) EQ '{, ENDFUN $ FUNCTION ARRAY (EX1), ROW (EX1) NDET), EX2: EX1, EX1: SOLF(0) EXIT, EX1: FALSE, ENDBLOCK, LEX2: UNION(EX1, LEX2), WHEN ATOM (LEX1), LEX2 EXIT, ENDLOOP, ENDFUN $ PROPERTY PRTMATH, {, FUNCTION (LEX1, EX1), PRINT ('{), WHEN ATOM (LEX1), P ADJOIN ('[, MAPBASE(LEX1)), ENDFUN $ FUNCTION MAPFUN(LOP1, LEX1), WHEN ATOM (LEX1), FALSE EXIT, ADJOIN (LOP1(POP(LEX1)), MAPFUN(LOP1, LEX1)), ENDFUN $ FUNCTION SIMPU (LOP1, EX1), WHEN NAME (EX1), LIST(LOP1,EX1) EXIT, WHEN APPLY (WHEN ATOM(LEX1), EX1 EXIT, WHEN ARRAY(EX1) AND POSITIVE(FIRST(LEX1)), SUBSCR2(REST(EX1), FIRST(LEX1)) EXIT, ADJOIN (SUBSCR, ADJOIN(EX1,LEX1)), ENDFUN $ FUNCTION SUBSCR2 (LEX2, EX1), WHEN ATOM(LEX2), 0 EXIT, WHEN EX1 EQ 1, SUBSCR1 (EX1, LEX1, EX2), ASSIGN (EX1, UPDATE1 (EVAL(EX1), MAPFUN('EVAL,LEX1))), ENDSUB $ FUNCTION UPDATE1 (EX3, LEX1), WHEN ATOM (LEX1), EVAL (EX2) EXIT, WHEN ARRAY (EX3) AND POSITIVE (FIRST(LEX1)), ADJOIN (FIRST(EX3), UPDATE2(REST(EX3),% File MATRIX.ARR (c) 08/21/82 The Soft Warehouse % PROPERTY RBP, ., 125 $ PROPERTY LBP, ., 125 $ FUNCTION INPROD (LEX1, LEX2, % Local: % EX1), EX1: 0, LOOP WHEN ATOM (LEX1) OR ATOM (LEX2), EX1 EXIT, EX1: EX1 + POP(X1)), ENDFUN $ FUNCTION . (EX1, EX2), WHEN ROW (EX1), WHEN COL (EX2), INPROD (REST(EX1), REST(EX2)) EXIT, WHEN ROW (EX2), ADJOIN ('[, MAPDOTRT(REST(EX2))) EXIT, EX1 * EX2 EXIT, WHEN COL(EX1), WHEN ROW (EX2), ADJOIN ('{, MATCH('})) $ PUSH ('}, DELIMITER) $ PROPERTY +, {, FUNCTION (EX1, LEX1), WHEN COL (EX1), ADJOIN('{, MAPADD2(REST(EX1), LEX1)) EXIT, ENDFUN $ PROPERTY *, {, FUNCTION (EX1, LEX1), WHEN COL (EX1), ADJOIN('{, MAPMULT2(RES%******************** Optional Subscript Package **************% PROPERTY INFIX, [, ADJOIN (SUBSCR, ADJOIN(EX1, MATCH(']))) $ PROPERTY LBP, [, 200 $ FUNCTION SUBSCR LEX1, SUBSCR1 (POP(LEX1), LEX1), ENDFUN $ FUNCTION SUBSCR1 (EX1, LEX1), ckage ************% PROPERTY INFIX, :, COND ( WHEN NAME (EX1), LIST (':, EX1, PARSE (SCAN,20)) EXIT, WHEN FIRST(EX1) EQ 'SUBSCR, LIST (UPDATE, SECOND(EX1), RREST(EX1), PARSE(SCAN,20)) EXIT, WHEN SYNTAX () EXIT) $ SUBROUTINE UPDATEFIRST(LEX2), UPDATE2 (REST(LEX2), EX4-1)), ENDFUN $ RDS () $ N ATOM (LEX1), LEX1 EXIT, EX1: POP(LEX1), ADJOIN (ADJOIN ('[, MAPDOTRT(LEX2)), OUTPROD(LEX1, LEX2)), ENDFUN $ FUNCTION MAPDOTLFT (LEX1), % Fluid var from ".": EX2 % WHEN ATOM (LEX1), FALSE EXIT, ADJOIN (POP(LEX1) . EX2, MAPDOTLFT(LEGET(LOP1,FIRST(EX1)), ARGEX(EX1)) EXIT, WHEN MEMBER (FIRST(EX1), '("==" [ {)), ADJOIN (POP(EX1), MAPFUN(LOP1,EX1)) EXIT, LIST (LOP1, EX1), ENDFUN $ %******************** Optional Column Package *****************% PROPERTY PREFIX, {, , FUNCTION (LEX1, EX1), PRINT('{), WHEN ATOM (LEX1), PRINT ('}) EXIT, EX1: SPACES (), LOOP PRTMATH (POP(LEX1), 0, 0, TRUE), WHEN ATOM (LEX1) EXIT, PRINTLINE (COMMA), SPACES (EX1), ENDLOOP, PRINT ('}), ENDFUN $ (FIRST(LEX2), REST(LEX1)) EXIT, SUBSCR2 (REST(LEX2), EX1 - 1), ENDFUN $ PROPERTY PRTMATH, SUBSCR, FUNCTION (LEX1), PRTMATH (POP(LEX1), 0, 0), PRTMATH (ADJOIN ('[, LEX1), 0, 0), ENDFUN $ %************* Optional Subscripted Assignment PaFIRST(LEX1))) EXIT, ? (LIST ('_, EX1, EX2)), ENDFUN $ FUNCTION UPDATE2 (LEX2, EX4), BLOCK WHEN ATOM (LEX2), LEX2: LIST(0) EXIT, ENDBLOCK, WHEN EX4 EQ 1, ADJOIN (UPDATE1(FIRST(LEX2),REST(LEX1)), REST(LEX2)) EXIT, ADJOIN (LEX1).POP(LEX2), ENDLOOP, ENDFUN $ FUNCTION MAPDOTRT (LEX1), % Fluid var from OUTPROD or ".": EX1 % WHEN ATOM (LEX1), LEX1 EXIT, ADJOIN (EX1.POP(LEX1), MAPDOTRT(LEX1)), ENDFUN $ FUNCTION OUTPROD (LEX1, LEX2, % Local: % EX1), WHET(EX1), LEX1)) EXIT, ADJOIN ('{, MAPMULT1(LEX1)), ENDFUN $ PROPERTY BASE, {, FUNCTION (EX1, LEX1), ADJOIN ('{, MAPEXPON(LEX1)), ENDFUN $ PROPERTY EXPON, {, FUNCTION (EX1, LEX1), ADJOIN ('{, MAPBASE(LEX1)), ENDFUN $ PROPERTY PRTMATH, { ADJOIN ('{, OUTPROD (REST(EX1), REST(EX2))) EXIT, WHEN COL (EX2), ADJOIN ('{, MAPDOTLFT(REST(EX1))) EXIT, EX1 * EX2 EXIT, EX1 * EX2, ENDFUN $ %******************* Optional Transpose Package ******************% PROPER$ FUNCTION BACKSUB(LEX3), % Fluid vars from \: LEX1 & LEX2 % LOOP WHEN ATOM (LEX1), ADJOIN ('{, LEX3) EXIT, PUSH (POP(LEX2) - POP(LEX1).ADJOIN('{,LEX3), LEX3), ENDLOOP, ENDFUN $ FUNCTION COLMAT(EX1), WHEN FIRST(EX1) EQ above a column of zeros % WHEN (EX4:REST(FIRST(EX1))) AND NOT ZERO(EX4:FIRST(EX4)), EX3: EX4 \ ADJOIN('[, RREST(POP(EX1))), EX4: EX4 \ POP(EX2), LOOP % update remainder of EX1: % WHEN ATOMN ATOM(LEX3), BACKSUB(ADJOIN(EX4,STARTBACK(EX2))) EXIT, EX3: LEX3, % have singular matrix: % LOOP WHEN ATOM(EX3), BACKSUB(STARTBACK(EX2)) EXIT, WHEN REST(POP(EX3)), % maybe a nonzero inNDFUN $ PROPERTY BASE, {, FUNCTION (EX1, LEX1, % Local: % EX2), WHEN ZERO(EX1), IDMAT (LENGTH(LEX1)) EXIT, WHEN COLMAT(EX2:ADJOIN('{,LEX1)) OR COLMAT(EX2.IDMAT(LENGTH(LEX1))), WHEN POSITIVE (EX1), WHEN EX1 EQ 1, EX2 EXIT, ADJOIN ('{, MAPFUN('`, LEX1)), ENDFUN $ PROPERTY LBP, TR, 170 $ MOVD ('`, 'TR) $ %***************** Optional Matrix Division Package **************% FUNCTION APPEND (LEX1, LEX2), WHEN ATOM (LEX1), LEX2 EXIT, ADJOIN (POP(LEX1), APPE, WHEN ZERO (EX1:POP(LEX1)), ADJOIN (ARB(#ARB:#ARB+1), STARTBACK(LEX1)) EXIT, WHEN ARRAY (EX1), ADJOIN (ADJOIN (FIRST(EX1), STARTBACK (REST(EX1))), STARTBACK(LEX1)) EXIT, ADJOIN (? (LIST ('/, EX1, 0)), STARTBACK(LEX1)), ENDFUN IDMAT(LENGTH(REST(EX1))))) AND (COL(EX2) OR ROW(EX2) AND COL(EX2: EX2.IDMAT(LENGTH(REST(EX2))))), EX1: REST(EX1), EX2: REST(EX2), LOOP % make EX1 unit upper triangular, then back substitute % LOOP % make implied unit diagonal PUSH (ADJOIN ('[, RREST(POP(EX1))), LEX3), PUSH (FIRST(EX2), LEX4), WHEN ATOM(EX1) EXIT, % Singular matrix: % EX2: REST(EX2), ENDLOOP, WHEN ATOM(EX1), % do back substitution: % WHELEX2), ENDLOOP EXIT, EX2 / EX1, ENDFUN $ %********* Optional Matrix Power & Inverse Package ****************% PROPERTY BASE, [, FUNCTION (EX1, LEX1), WHEN COLMAT (LEX1: ADJOIN('[,LEX1).IDMAT(LENGTH(LEX1))), LEX1 ^ EX1 EXIT ETY LBP, `, 170 $ FUNCTION ` (EX1), WHEN ATOM (EX1), EX1 EXIT, WHEN APPLY (GET('`, FIRST(EX1)), ARGEX(EX1)) EXIT, EX1, ENDFUN $ PROPERTY `, {, FUNCTION (LEX1), ADJOIN ('[, MAPFUN('`, LEX1)), ENDFUN $ PROPERTY `, [, FUNCTION (LEX1), 1), WHEN ATOM (EX2:REST(EX2)), ADJOIN ('{, EX1) EXIT, ENDLOOP EXIT, ENDFUN $ PROPERTY RBP, \, 125 $ PROPERTY LBP, \, 125 $ #ARB: 0 $ FUNCTION STARTBACK (LEX1, % Local: % EX1), % Global: #ARB % WHEN ATOM (LEX1), FALSE EXIT '{, LOOP WHEN ATOM (EX1:REST(EX1)) EXIT, WHEN NOT ROW(FIRST(EX1)), FALSE EXIT ENDLOOP EXIT ENDFUN $ FUNCTION \ (EX1, EX2, % Local: % EX3, EX4, LEX1, LEX2, LEX3, LEX4), WHEN (COLMAT(EX1) OR ROW(EX1) AND COLMAT(EX1: EX1.(EX1), EX1: LEX3, EX2: APPEND(LEX4,EX2) EXIT, PUSH (ADJOIN ('[, RREST(FIRST(EX1))) - SECOND(FIRST(EX1)).EX3, LEX3), PUSH (POP(EX2) - SECOND(POP(EX1)).EX4, LEX4), ENDLOOP EXIT, next col % EX2: REST (ADJOIN ('{,LEX3) \ ADJOIN('{,LEX4)), BACKSUB(ADJOIN(POP(EX2:REVERSE(EX2)),REVERSE(EX2))) EXIT, ENDLOOP EXIT, LEX3: LEX4: FALSE, PUSH (EX3, LEX1), PUSH (EX4, ND(LEX1,LEX2)), ENDFUN $ FUNCTION IDMAT (EX1, % Local: % EX2), WHEN POSITIVE (EX1), EX2: LIST (1), LOOP WHEN ZERO (EX1:EX1-1) EXIT, PUSH (0, EX2), ENDLOOP, EX1: FALSE, LOOP PUSH (ADJOIN ('[, EX2), EX EX2 . EX2^(EX1-1) EXIT, WHEN NEGATIVE (EX1), WHEN EX1 EQ -1, EX2 \ IDMAT (LENGTH(LEX1)) EXIT, (EX2 ^ -1) ^ -EX1 EXIT EXIT, ENDFUN $ %***************** Optional Determinant Package *****************% FUNCTION DET (EX1, G(EX1,LOGBAS) / LOG(EX2,LOGBAS) EXIT, WHEN ATOM(EX1), LIST('LOG, EX1, EX2) EXIT, WHEN APPLY(GET('LOG,FIRST(EX1)), ADJOIN(EX2,ARGEX(EX1))) EXIT, LIST('LOG, EX1, EX2), ENDFUN $ PROPERTY PRTMATH, LOG, FUNCTION (LEX1, % Local: % EX1), EX1 EX2, EX3), WHEN NEGMULT(LOGEXPD,2) AND POWER(EX1) AND LOGARITHM(SECOND(EX1)) AND THIRD(EX1) EQ -1 AND THIRD(SECOND(EX1))=EX3, LOG (EX2, SECOND(SECOND(EX1))) EXIT, WHEN NEGMULT(LOGEXPD,3), LOG (EX2^EX1, EX3) EXIT, ENDFUN $ % File TRGPOS.ALG (c) 8/29/80 The Soft Warehouse % FUNCTION NEGLT(EX1), WHEN SUM(EX1), WHEN POSMULT(NUMNUM,2), NEGCOEF(SECOND(EX1)) EXIT EXIT, NEGCOEF(EX1), ENDFUN $ FUNCTION SIN (EX1), WHEN ZERO(EX1), EX1 EXIT, WHEN NEGLT (EX1)N(EX1)^-1 EXIT, SIMPU ('CSC, EX1), ENDFUN $ FUNCTION SEC (EX1), WHEN POSMULT(TRGEXPD,2), COS(EX1)^-1 EXIT, SIMPU ('SEC, EX1), ENDFUN $ HALF: 1/2 $ TRGSQ: 0 $ PUSH ('TRGSQ, FLAGS) $ PROPERTY BASE, SIN, FUNCTION (EX1, EX2), W EX2: EX2.EX4, EX4: EX4 \ ADJOIN('[,RREST(POP(EX1))), LOOP WHEN ATOM(EX1), EX1: LEX3 EXIT, PUSH (ADJOIN('[,RREST(FIRST(EX1))) - SECOND(POP(EX1)).EX4, LEX3) ENDLOOP EXIT, N EX2 EQ 1, ?(LIST('LOG, EX1, EX2)) EXIT, WHEN PBRCH AND EX1 EQ 1, 0 EXIT, WHEN PBRCH AND EX1=EX2, 1 EXIT, WHEN PBRCH AND ZERO (MOD(EX1,EX2)), 1 + LOG (QUOTIENT(EX1,EX2), EX2) EXIT, WHEN NOT(EX2 EQ LOGBAS) AND POSMULT(LOGEXPD,2), LOMULT(LOGEXPD,5), LOG(EX2,EX1) + LOG(EX3,EX1) EXIT, ENDFUN $ PROPERTY LOG, ^, FUNCTION (EX1, EX2, EX3), WHEN POSMULT(LOGEXPD,3), EX3*LOG(EX2,EX1) EXIT, WHEN PBRCH AND EX1=EX2, EX3*LOG(EX2,EX1) EXIT, ENDFUN $ PROPERTY *, LOG, FUNCTION (EX1,PERTY EXPON, LOG, FUNCTION (EX1, EX2, EX3), WHEN EX1 = EX3, EX2 EXIT, ENDFUN $ STOP $ RDS() $ ȅàʅȱʅǥ`…ĥÅťƅDžȪȱȆȅɠʅȱʅ 7(8`ȪȱȆȅɠʪȱʆʅ˥0㐢 M M2), SIN(EX1)/COS(EX1) EXIT, SIMPU('TAN, EX1), ENDFUN $ FUNCTION COT (EX1), WHEN NEGLT(EX1), -COT(-EX1) EXIT, WHEN POSMULT(TRGEXPD,2), COS(EX1)/SIN(EX1) EXIT, SIMPU('COT, EX1), ENDFUN $ FUNCTION CSC (EX1), WHEN POSMULT(TRGEXPD,2), SI% Local: % EX2, EX3, EX4, EX5, LEX3), WHEN COLMAT(EX1) OR ROW(EX1) AND COLMAT(EX1:EX1.IDMAT(LENGTH(REST(EX1)))), EX1: REST(EX1), EX2: EX3: 1, LOOP LOOP WHEN (EX4:REST(FIRST(EX1))) AND NOT ZERO(EX4:FIRST(EX4)), % File LOG.ALG (c) 05/21/81 The Soft Warehouse % FUNCTION LOGEXPD (EX1, LOGEXPD), EVAL (EX1), ENDFUN $ FUNCTION LOG (EX1, % Optional: % EX2), WHEN EMPTY(EX2), LOG (EX1, LOGBAS) EXIT, WHEN ZERO(EX1), ?(LIST('LOG, EX1, EX2)) EXIT, WHE : POP(LEX1), LEX1: FIRST(LEX1), WHEN LEX1 EQ #E, PRTLIST ('LN, EX1) EXIT, WHEN LEX1 = LOGBAS, PRTLIST ('LOG, EX1) EXIT, ENDFUN $ FUNCTION LN (EX1), LOG(EX1, #E), ENDFUN $ PROPERTY LOG, *, FUNCTION (EX1, EX2, EX3), WHEN POSFUNCTION LOGARITHM (EX1), FIRST(EX1) EQ 'LOG, ENDFUN $ PROPERTY +, LOG, FUNCTION (EX1, EX2, EX3), WHEN LOGARITHM(EX1), WHEN NEGMULT(LOGEXPD,5), WHEN THIRD(EX1)=EX3, LOG (SECOND(EX1)*EX2, EX3) EXIT EXIT EXIT, ENDFUN $ PRO, -SIN(-EX1) EXIT, SIMPU ('SIN, EX1), ENDFUN $ FUNCTION COS (EX1), WHEN ZERO(EX1), 1 EXIT, WHEN NEGLT (EX1), COS(-EX1) EXIT, SIMPU ('COS, EX1), ENDFUN $ FUNCTION TAN (EX1), WHEN NEGLT(EX1), -TAN(-EX1) EXIT, WHEN POSMULT(TRGEXPD,PUSH (ADJOIN('[,RREST(POP(EX1))), LEX3), EX5: NOT EX5, WHEN ATOM(EX1), EX2: 0 EXIT ENDLOOP, WHEN ATOM(EX1) WHEN (MOD(EX3,4) EQ 3) EQ EX5, EX2 EXIT, -EX2 EXIT, EX3: EX3+1, LEX3: FALSE ENDLOOP EXHEN POSITIVE (EX1) AND POSMULT (TRGEXPD, 3), SIN(EX2)^(EX1-2) * (HALF - COS(2*EX2)*HALF) EXIT, WHEN LESSER (EX1, -1) AND POSMULT (TRGEXPD, 3), (SIN(EX2)^-EX1) ^ -1 EXIT, WHEN EX1 < 0 AND NEGMULT (TRGEXPD, 2), CSC(EX2) ^ -EX1 EX1+EX2) + HALF*SIN(EX1-EX2) EXIT, WHEN FIRST(EX1) EQ 'COS, EX1: SECOND (EX1), HALF*COS(EX1-EX2) + HALF*COS(EX1+EX2) EXIT EXIT, ENDFUN $ STOP $ RDS() $  WHEN ZERO(EX1), EX4 EXIT, WHEN POSITIVE (EX1), MULTANGLE1 (EX1, EX3, EX4) EXIT, ENDFUN $ FUNCTION MULTANGLE1 (EX1, EX3, EX4), % Fluid var from MULTANGLE: EX2 % WHEN EX1 EQ 1, EX3 EXIT, MULTANGLE1 (EX1 - 1, EX2*EX3 - EX4, EX3), ENDFUN $ (2+POP(EX1),8), EX1/EX2) EXIT, WHEN POSMULT (TRGEXPD, 7), (1/(EX2:#E^(#I*EX1)) + EX2) * HALF EXIT, SIMPU ('COS, EX1), ENDFUN $ FUNCTION SINCOS (EX1, EX2), WHEN LESSER(3,EX1), -SINCOS(EX1-4, EX2) EXIT, WHEN ZERO(EX1), SIN1(EX2) EXITN, *, FUNCTION (EX1, EX2), WHEN NEGMULT (TRGEXPD, 3), MULTANGLE (EX1, 2*COS(EX2), SIN(EX2), 0) EXIT, ENDFUN $ PROPERTY COS, *, FUNCTION (EX1, EX2), WHEN NEGMULT (TRGEXPD, 3), MULTANGLE (EX1, 2*COS(EX2), COS(EX2), 1) EXIT, ENDFUN $ PNDFUN $ PROPERTY BASE, COS, FUNCTION (EX1, EX2), WHEN POSITIVE (EX1) AND POSMULT (TRGEXPD, 3), COS(EX2)^(EX1-2) * (HALF + COS(2*EX2)*HALF) EXIT, WHEN LESSER (EX1, -1) AND POSMULT (TRGEXPD, 3), (COS(EX2)^-EX1) ^ -1 EXIT, WHEN EX1RST(EX1) EQ 'COS, EX1: SECOND (EX1), HALF*SIN(EX1+EX2) - HALF*SIN(EX1-EX2) EXIT EXIT, ENDFUN $ PROPERTY *, COS, FUNCTION (EX1, EX2), WHEN POSMULT (TRGEXPD, 5), WHEN FIRST(EX1) EQ 'SIN, EX1: SECOND (EX1), HALF*SIN(EX% File TRGNEG.ALG (c) 08/05/81 The Soft Warehouse % HALF: 1/2 $ FUNCTION NEGLT (EX1), WHEN SUM (EX1), WHEN POSMULT (NUMNUM, 2), NEGCOEF (SECOND(EX1)) EXIT EXIT, NEGCOEF (EX1), ENDFUN $ FUNCTION MULTANGLE (EX1, EX2, EX3, EX4), #I * (1/(EX2:#E^(#I*EX1)) - EX2) * HALF EXIT, SIMPU ('SIN, EX1), ENDFUN $ FUNCTION COS (EX1, % Local: % EX2), WHEN NEGLT (EX1), COS(-EX1) EXIT, WHEN NUMBER(EX2:EX1*FOURONPI), EX1: DIVIDE (NUM(EX2), EX2:DEN(EX2)), SINCOS (MODO3RDS, HALF EXIT, LIST ('SIN, EX1*PION4), ENDFUN $ RT3ON2: 3^HALF * HALF $ FUNCTION COS1 (EX1), WHEN ZERO(EX1), 1 EXIT, WHEN EX1 EQ 1, ONRT2 EXIT, WHEN EX1 = TWO3RDS, RT3ON2 EXIT, LIST ('COS, EX1*PION4), ENDFUN $ PROPERTY SIIT, WHEN POSITIVE (EX1) AND NEGATIVE (TRGSQ), (1-COS(EX2)^2)^QUOTIENT(EX1,2) * SIN(EX2)^MOD(EX1,2) EXIT, WHEN LESSER (EX1, -1) AND NEGATIVE (TRGSQ), EX1: -EX1, ((1-COS(EX2)^2)^QUOTIENT(EX1,2) * SIN(EX2)^MOD(EX1,2))^-1 EXIT, E^QUOTIENT(EX1,2) * COS(EX2)^MOD(EX1,2))^-1, EXIT, ENDFUN $ PROPERTY *, SIN, FUNCTION (EX1, EX2), WHEN POSMULT (TRGEXPD, 5), WHEN FIRST(EX1) EQ 'SIN, EX1: SECOND (EX1), HALF*COS(EX1-EX2) - HALF*COS(EX1+EX2) EXIT, WHEN FILA@@&E&&A@@&AA)߅CBBH&E&&A@B& ChLQhBAȌy8zx8v{v I7H7@)*AL@m{@AAA,+i(ˢ3Z@[A@ /@v wm{@8/e@@eAA3]ͥ@\ƊiY FOURONPI: 4 / #PI $ FUNCTION SIN (EX1, % Local: % EX2), WHEN NEGLT (EX1), -SIN(-EX1) EXIT, WHEN NUMBER(EX2:EX1*FOURONPI), EX1: DIVIDE (NUM(EX2), EX2:DEN(EX2)), SINCOS (MOD(POP(EX1),8), EX1/EX2) EXIT, WHEN POSMULT (TRGEXPD, 7), , WHEN EX1 EQ 1, COS1(1-EX2) EXIT, WHEN EX1 EQ 2, COS1(EX2) EXIT, SIN1(1-EX2), ENDFUN $ PION4: 1/FOURONPI $ ONRT2: 2^-HALF $ TWO3RDS: 2/3 $ FUNCTION SIN1 (EX1), WHEN ZERO(EX1), EX1 EXIT, WHEN EX1 EQ 1, ONRT2 EXIT, WHEN EX1 = TW < 0 AND NEGMULT (TRGEXPD, 2), SEC(EX2) ^ -EX1 EXIT, WHEN POSITIVE (EX1) AND POSITIVE (TRGSQ), (1-SIN(EX2)^2)^QUOTIENT(EX1,2) * COS(EX2)^MOD(EX1,2) EXIT, WHEN LESSER (EX1, -1) AND POSITIVE (TRGSQ), EX1: -EX1, ((1-SIN(EX2)^2)ROPERTY SIN, +, FUNCTION (EX1, EX2), WHEN NEGMULT (TRGEXPD, 5), SIN(EX1)*COS(EX2) + COS(EX1)*SIN(EX2) EXIT, ENDFUN $ PROPERTY COS, +, FUNCTION (EX1, EX2), WHEN NEGMULT (TRGEXPD, 5), COS(EX1)*COS(EX2) - SIN(EX1)*SIN(EX2) EXIT, ENDFUN $ DFUN $ PROPERTY TAN, ATAN, IDENTITY $ PROPERTY SIN, ASIN, IDENTITY $ PROPERTY COS, ACOS, IDENTITY $ PROPERTY COT, ACOT, IDENTITY $ PROPERTY CSC, ACSC, IDENTITY $ PROPERTY SEC, ASEC, IDENTITY $ FUNCTION TRGEXPD (EX1, TRGEXPD), EVAL (EX1), ENDFUN $ PROPERTY DIF, DEFINT, FUNCTION (EX1, EX2, EX3, EX4), EX4: THIRD(EX2:REST(EX2)), EX3: SECOND(EX2), DEFINT (DIF(EX1,INDET), EX2:FIRST(EX2), EX3, EX4) + DIF(EX4,INDET) * EVSUB(EX1,EX2,EX4) - DIF(EX3,INDET) * EVSUB(EX1,EX3,EX3), EN, ENDFUN $ PROPERTY DIF, ACOS, FUNCTION (EX1), -(1-EX1^2)^MINUSHALF * DIF(EX1,INDET), ENDFUN $ PROPERTY DIF, ASIN, FUNCTION (EX1), (1-EX1^2)^MINUSHALF * DIF(EX1,INDET), ENDFUN $ PROPERTY DIF, ATAN, FUNCTION (EX1), (1+EX1^2)^-1 * DIF(EXUN $ PROPERTY DIF, LOG, FUNCTION (EX1, EX2), WHEN EX2 EQ #E, DIF(EX1,INDET) / EX1 EXIT, DIF (LOG(EX1,#E)/LOG(EX2,#E), INDET), ENDFUN $ PROPERTY DIF, ^, FUNCTION (EX1, EX2), EX1^EX2 * (LOG(EX1,#E)*DIF(EX2,INDET) + EX2*DIF(EX1,INDET)/EX1), PROPERTY BASE, SEC, FUNCTION (EX1, EX2), WHEN EX1<0, WHEN NEGMULT(TRGEXPD,2), COS(EX2) ^ -EX1 EXIT EXIT, ENDFUN $ PROPERTY BASE, CSC, FUNCTION (EX1, EX2), WHEN EX1<0, WHEN NEGMULT(TRGEXPD,2), SIN(EX2) ^ -EX1 EXIT EXIT, ENDFUN $ EXIT EXIT, ENDFUN $ PROPERTY *, CSC, FUNCTION (EX1, EX2), WHEN NOT ATOM(EX1), WHEN SECOND(EX1)=EX2, WHEN (EX1:FIRST(EX1)) EQ 'SIN, 1 EXIT, WHEN EX1 EQ 'COS, COT(EX2) EXIT, WHEN EX1 EQ 'TAN, SEC(EX2) EXIT EXIT EXIT, EN% File DIF.ALG (c) 03/26/81 The Soft Warehouse % FUNCTION DIF (EX1, INDET), WHEN EX1=INDET, 1 EXIT, WHEN ATOM(EX1), 0 EXIT, WHEN APPLY (GET(DIF,FIRST(EX1)), ARGEX(EX1)) EXIT, WHEN FREE(EX1,INDET), 0 EXIT, LIST ('DIF, EX1, INDET), ENDACSC, FUNCTION (EX1), -(EX1^-1) * (EX1^2-1)^MINUSHALF * DIF(EX1,INDET), ENDFUN $ PROPERTY DIF, ASEC, FUNCTION (EX1), EX1^-1 * (EX1^2-1)^MINUSHALF * DIF(EX1,INDET), ENDFUN $ PROPERTY DIF, ACOT, FUNCTION (EX1), -(1+EX1^2)^-1 * DIF(EX1,INDET)(EX1,INDET), ENDFUN $ PROPERTY DIF, TAN, FUNCTION (EX1), SEC(EX1)^2 * DIF(EX1,INDET), ENDFUN $ PROPERTY DIF, COS, FUNCTION (EX1), -SIN(EX1) * DIF(EX1,INDET), ENDFUN $ PROPERTY DIF, SIN, FUNCTION (EX1), COS(EX1) * DIF(EX1,INDET), ENDF PROPERTY BASE, TAN, FUNCTION (EX1, EX2), WHEN EX1<0, WHEN NEGMULT(TRGEXPD,2), COT(EX2) ^ -EX1 EXIT EXIT, ENDFUN $ PROPERTY BASE, COT, FUNCTION (EX1, EX2), WHEN EX1<0, WHEN NEGMULT(TRGEXPD,2), TAN(EX2) ^ -EX1 EXIT EXIT, ENDFUN $ X2, COS(EX2) EXIT EXIT, ENDFUN $ PROPERTY *, SEC, FUNCTION (EX1, EX2), WHEN NOT ATOM(EX1), WHEN SECOND(EX1)=EX2, WHEN (EX1:FIRST(EX1)) EQ 'COS, 1 EXIT, WHEN EX1 EQ 'SIN, TAN(EX2) EXIT , WHEN EX1 EQ 'COT, CSC(EX2) EXITFUN $ RDS() $  yғ{<_P͇:͎{i*di~#i²iÂe 2$   DA"L:< "DFUN $ PROPERTY DIF, INT, FUNCTION (EX1, EX2), WHEN INDET=EX2, EX1 EXIT, INT(DIF(EX1,INDET),EX2), ENDFUN $ MINUSHALF: -1/2 $ PROPERTY DIF, ERF, FUNCTION (EX1), 2 * #PI^MINUSHALF * #E^-(EX1^2) * DIF(EX1,INDET), ENDFUN $ PROPERTY DIF, 1,INDET), ENDFUN $ PROPERTY DIF, CSC FUNCTION (EX1), -COT(EX1) * CSC(EX1) * DIF(EX1,INDET), ENDFUN $ PROPERTY DIF, SEC FUNCTION (EX1), TAN(EX1) * SEC(EX1) * DIF(EX1,INDET), ENDFUN $ PROPERTY DIF, COT, FUNCTION (EX1), -CSC(EX1)^2 * DIF PROPERTY *, TAN, FUNCTION (EX1, EX2), WHEN SECOND(EX1)=EX2, WHEN FIRST(EX1) EQ 'COS, SIN(EX2) EXIT, WHEN FIRST(EX1) EQ 'COT, 1 EXIT EXIT, ENDFUN $ PROPERTY *, COT, FUNCTION (EX1, EX2), WHEN FIRST(EX1) EQ 'SIN, WHEN SECOND(EX1)=E ENDFUN $ PROPERTY DIF, *, FUNCTION (EX1, EX2), EX1*DIF(EX2,INDET) + EX2*DIF(EX1,INDET), ENDFUN $ PROPERTY DIF, +, FUNCTION (EX1, EX2), EX1: DIF(EX1,INDET), WHEN SUM (EX2), POP (EX2), LOOP EX1: EX1 + DIF(POP(EX2),INDET), s % % READCHAR: set to FALSE for raw input mode % % RSLT: dotted pair of response and revised AList % WHEN ASSOC(EX1,LEX3), ADJOIN (REST(ASSOC(EX1,LEX3)), LEX3) EXIT, NEWLINE (), PRINT ("???"), SPACES (2), PRTMATH (EX1, 0, 0, TRU, WHEN EX1 EQ MINF, -1 EXIT, WHEN EX1 = PINF-MINF, 1 EXIT, EX1: QUERY (EX1, '(SIGN), LIST(0, '+, '-), SIGN), SIGN: REST(EX1), EX1: FIRST(EX1), WHEN ZERO(EX1), EX1 EXIT, WHEN EX1 EQ '+, 1 EXIT, -1 ENDFUN $ HALF: 1/2 $ FUNCTIX5/EX3), INDET), HALF*EX3*EX4^2 EXIT, WHEN SUM(EX4), DRVDIV (LEX1) EXIT, WHEN ZERO (EX3: DIF(SECOND(EX4), INDET)), WHEN ZERO(EX3:DIF(THIRD(EX4),INDET)), DRVDIV (LEX1) EXIT, WHEN FREE(EX3:EXPD(EX5/EX3), INDET), WHEN EX5: APPLY (Jȅ¥Ʌåȥ  K K J JLV˜ȑLVȅȱȅˠȪȱȆȅ $K +JåLDȑ < dJ  KʑȱˑLV)PȅȱȅˠȪȱȆȅɥ7 K $Kªȱ†…  K Kᰰ)`8`%File INT.DIF (c) 08/23/82 The Soft Warehouse % FUNCTION QUERY (EX1, LEX1, LEX2, LEX3, READCHAR), % EX1: relative subexpression % % LEX1: query question % % LEX2: possible responses % % LEX3: AList of previous expressions & answerMBER (READCHAR(), LEX2) EXIT, ENDLOOP, PRINTLINE (SCAN), ADJOIN (SCAN, ADJOIN(ADJOIN(EX1,SCAN),LEX3)) ENDFUN $ FUNCTION SIGN(EX1), WHEN ZERO(EX1), EX1 EXIT, WHEN EX1 > 0, 1 EXIT, WHEN EX1 < 0, -1 EXIT, WHEN EX1 EQ PINF, 1 EXITEX3, EX4, EX5 % WHEN EMPTY (LEX1), INT3() EXIT, WHEN (EX4:POP(LEX1)) = INDET, DRVDIV (LEX1) EXIT, EX5: FCTR (LIST ('/, EX1, EX4)), WHEN ZERO (EX3:DIF(EX4,INDET)), EX2: EX2*EX4, EX1: EX5, DRVDIV (LEX1) EXIT, WHEN FREE (EX3:EXPD(E WHEN EMPTY (EX2), EX1 EXIT, ENDLOOP EXIT, EX1 + DIF(EX2,INDET), ENDFUN $ RDS() $ LVݠȅȱȅˠȪȱȆȅɥ᰽ Jȩmʥȱ(ۥ̠̅M̱̅ QJ +J $K IT ENDFUN $ RDS () $ E), SPACES (2), PRINTLINE ("???"), PRINT ('ENTER), LOOP SPACES (1), WHEN EMPTY (LEX1) EXIT, PRINT (POP(LEX1)) ENDLOOP, PRINT (LEX2), PRINT ("? "), BLOCK WHEN BELL, PRINT ("") EXIT, ENDBLOCK, LOOP WHEN MEON INT3 (), % Global var HALF=1/2 & fluid vars INDET from INT & EX1 from INT1 % WHEN EX1 = INDET, HALF*EX1^2 EXIT, APPLY (GET('INT,FIRST(EX1)), ARGEX(EX1)), ENDFUN $ FUNCTION DRVDIV (LEX1), % Fluid vars, from INT & INT1: INDET, EX1, EX2, ȱåʅȥ˅L JȪȱȆȅ  Kʅȱʅɥݐ K  Kʑȥˑ` I¥à¥RȅȱȅˠȪȱȆȅɥ J $Kʅȥ˅ K dJ gI¥LLk$LL Iʅȥ˅ gI KȥɠGET('INT, FIRST(EX4)), LIST (SECOND(EX4), INDET)), EX3 * EVSUB(EX5,INDET,THIRD(EX4)) EXIT, DRVDIV (LEX1) EXIT, DRVDIV (LEX1) EXIT, WHEN FREE (RREST(EX4), INDET), WHEN FREE (EX3:EXPD(EX5/EX3), INDET), WHEN EX5 EX2 * (LN(EX2)-1)/EX3 EXIT EXIT, ENDFUN $ MINUSHALF: -HALF $ PROPERTY INT, ^, FUNCTION (EX2, EX3, % Local: % EX4, EX5), % Globals HALF=1/2, MINUSHALF=-1/2 % % Fluid var INDET from INT % WHEN FREE (EX3, INDET), WHEN EX2 = INDET, NT, INT1 & property INT ^: INDET, EX1, EX2, EX3, EX4 % WHEN FREE (EX6:DIF(EX2,INDET), INDET), WHEN ZERO (EX3: EX3+1), LN(EX2)/EX6 EXIT, EX2^EX3 / (EX3*EX6) EXIT, WHEN POSITIVE(EX3), FALSE EXIT, WHEN FREE (EX7:DIF(EX6,INDET), IN WHEN ZERO (EX4:SIGN(EX7)), INT1 (EXPD ((EX2-HALF*EX7*INDET)^MINUSHALF)) EXIT, WHEN EX4 EQ 1, (HALF*EX7)^MINUSHALF * LN((2*EX2*EX7)^HALF+EX6) EXIT, -(MINUSHALF*EX7)^MINUSHALF * ASIN(EX6*(-EX5)^MINUSHALF) EXIT, WHEN  % WHEN PRODUCT(EX1), DRVDIV (REST(EX1)) EXIT, WHEN FREE(EX1,INDET), EX1*INDET EXIT, INT3(), ENDFUN $ FUNCTION INT1 (EX1, % Local: % EX2, EX3, EX4, EX5), EX2: 1, WHEN EX3:INT2(), EX2*EX3 EXIT, TRGEXPD: LOGEXPD: NUMNUM: DENDEN: ENDFUN $ PROPERTY INT, SIN, FUNCTION (EX1, % Local: % EX2), WHEN FREE (EX2:DIF(EX1,INDET), INDET), -COS(EX1) / EX2 EXIT, ENDFUN $ PROPERTY INT, LOG, FUNCTION (EX2, EX3), WHEN EX3 EQ #E, WHEN FREE (EX3:DIF(EX2,INDET), INDET), FREE (EX5:DIF(EX4,INDET), INDET), (MINUSHALF*#PI/EX5/LN(EX2))^HALF * EX2^(EX3-HALF*EX4^2/EX5) * ERF (-EX4*(MINUSHALF*LN(EX2)/EX5)^HALF) EXIT EXIT, ENDFUN $ PROPERTY INTPWR, +, FUNCTION ( % Local: % EX6, EX7), % Fluid vars from I6*EX5^MINUSHALF) EXIT, (-EX5)^MINUSHALF * LN (((-EX5)^HALF-EX6) / ((-EX5)^HALF+EX6)) EXIT, WHEN NEGATIVE(EX3), ((2*EX3+3)*EX7*INT1(EX2^(EX3+1)) - EX6*EX2^(EX3+1)) / (EX3+1) / EX5 EXIT, WHEN EX3 = MINUSHALF, FUNCTION (EX1, EX2), EX1: INT1(EX1), WHEN SUM (EX2), POP (EX2), LOOP EX1: EX1 + INT1(POP(EX2)), WHEN EMPTY (EX2), EX1 EXIT, ENDLOOP EXIT, EX1 + INT1(EX2), ENDFUN $ RDS() $ : APPLY(GET('INT,FIRST(EX4)), ADJOIN(INDET,RREST(EX4))), EX3 * EVSUB(EX5,INDET,SECOND(EX4)) EXIT, DRVDIV (LEX1) EXIT, DRVDIV (LEX1) EXIT, DRVDIV (LEX1), ENDFUN $ FUNCTION INT2 (), % Fluid vars, from INT & INT1: INDET, EX1 PWREXPD: NUMDEN: LOGEXPD: TRGEXPD: 0, NUMNUM: DENNUM: 6, DENDEN: 2, BASEXP: -30, EXPBAS: 30, INT1 (EX1), ENDFUN $ PROPERTY INT, COS, FUNCTION (EX1, % Local: % EX2), WHEN FREE (EX2:DIF(EX1,INDET), INDET), SIN(EX1) / EX2 EXIT, WHEN ZERO (EX3: EX3+1), LN(EX2) EXIT, EX2^EX3 / EX3 EXIT, APPLY (GET(INTPWR, FIRST(EX2)), ARGEX(EX2)) EXIT, WHEN FREE (EX2, INDET), WHEN FREE (EX4:DIF(EX3,INDET), INDET), LIST('^, EX2, EX3) / EX4 / LN(EX2) EXIT, WHENDET), WHEN ZERO (EX4: SIGN(EX5: EXPD(2*EX2*EX7-EX6^2))), EX4: (2*EX7)^-EX3 / EX7, WHEN ZERO (EX3:2*EX3+1), EX4*LN(EX6) EXIT, EX4*EX6^EX3 / EX3 EXIT, WHEN EX3 EQ -1, WHEN EX4 EQ 1, 2 * EX5^MINUSHALF * ATAN(EXNEGATIVE(2*EX3), ((2*EX3+3)*EX7*INT1(EX2^(EX3+1)) - EX6*EX2^(EX3+1)) / (EX3+1) / EX5 EXIT, WHEN POSITIVE(2*EX3), HALF * (EX1*EX6 + EX3*EX5*INT1(EX2^(EX3-1))) / (HALF+EX3) / EX7 EXIT EXIT, ENDFUN $ PROPERTY INT, +,DENNUM: 30, PWREXPD: 6, EX1: EVAL(EX1), WHEN EX3:INT2(), EX2*EX3 EXIT, EX2 * LIST ('INT, EX1, INDET), ENDFUN $ FUNCTION INT (EX1, INDET, % Local: % PWREXPD, NUMNUM, DENDEN, DENNUM, NUMDEN, BASEXP, EXPBAS, LOGEXPD, TRGEXPD, SIGN), % File INTMORE.INT (c) 07/29/82 The Soft Warehouse % FUNCTION DEFINT (EX1, EX2, EX3, EX4, % Local: % EX5), WHEN FREE (EX5:INT(EX1,EX2), 'INT), WHEN INTEGER(#LIM), WHEN POSITIVE(SIGN(EX4-EX3)), LIM (LIM(EX5,EX2,EX4,TRUE) - LT, WHEN INTPROD(EX2,EX3) EXIT, INTPROD(EX3,EX2), ENDFUN $ PION4: #PI/4 $ PROPERTY INTPWR, COS, FUNCTION (EX4), % Fluid vars from property "INT^": EX2, EX3, EX5 % WHEN FREE (EX5:DIF(EX4,INDET), INDET), WHEN EX3 EQ -1, LN (TAN (PION4, EX5), % Fluid vars from INT1 & property "INT^": EX1, EX2, EX3 % WHEN EX5 EQ #E, WHEN POSITIVE(EX3), WHEN FREE (EX5:DIF(EX4,INDET), INDET), EX1*EX4/EX5 - EX3*INT1(EX2^(EX3-1)) EXIT EXIT EXIT, ENDFUN $ PROPERTY INTEXPTMS, EXIT, ENDFUN $ PROPERTY INTMONTMS, LOG, FUNCTION (EX5, EX6, EX7), % Fluid vars from INT and INTPROD: INDET, EX1, EX2 % WHEN EX7 EQ #E, WHEN FREE (EX7:DIF(EX6,INDET), INDET), WHEN ZERO (EX4: EXPD(EX6-INDET*EX7)), INDET * (E7) EXIT, WHEN NEGATIVE (EX6), -(EX7-EX4*INDET)^(1+EX6+EX8) * EVSUB (INT1( (INDET-EX4)^(-2-EX6-EX8)*INDET^EX8), INDET, EX7/INDET) EXIT EXIT, WHEN FREE (EX5:DIF(EX4,INDET), INDET), EX9: EX4 - EX5*INDET, var from INT1: EX1 % WHEN FREE (EX3:DIF(EX2,INDET), INDET), (EX1*EX2 + (1-EX2^2)^HALF) / EX3 EXIT, ENDFUN $ PROPERTY INT, ATAN, FUNCTION (EX2, % Local: % EX3), % Fluid var from INT1: EX1 % WHEN FREE (EX3:DIF(EX2,INDET), INDET), ) EXIT, WHEN FREE (EX4:SECOND(EX2), INDET), WHEN FREE (EX5:DIF(THIRD(EX2),INDET), INDET), APPLY (GET(INTEXPTMS,FIRST(EX3)), ARGEX(EX3)) EXIT EXIT EXIT, ENDFUN $ PROPERTY INT, *, FUNCTION (EX2, EX3), WHEN PRODUCT(EX3), FALSE EXIHEN FREE (EX5:DIF(EX4,INDET), INDET), WHEN EX3 EQ -1, LN (TAN(HALF*EX4)) / EX5 EXIT, WHEN NEGATIVE(EX3), ((EX3+2)*INT1(EX2^(EX3+2)) + COS(EX4)*EX2^(EX3+1)/EX5) / (EX3+1) EXIT EXIT, ENDFUN $ PROPERTY INTPWR, LOG, FUNCTION (EXPROPERTY INTEXPTMS, SIN, FUNCTION (EX6, EX7), % Fluid vars, from INT and INTPROD: INDET, EX1, EX2, EX3, EX4 % WHEN FREE (EX7:DIF(EX6,INDET), INDET), EX2 * EX4^(INDET-EX6/EX7) * (EX3*EX5*LN(EX4) - EX7*COS(EX6)) / ((EX5*LN(EX4))^2 + EX7^2)rom INT, INT1, & INTPROD: INDET, EX1, EX2, EX3, EX4, EX5 % WHEN NEGATIVE (EX8), WHEN FREE (EX4:DIF(EX7,INDET), INDET), WHEN POSITIVE (EX6), EX4^(-1-EX6) * EVSUB (INT1((INDET-EX7+EX4*INDET)^EX6 * INDET^EX8), INDET, EXIM(EX5,EX2,EX3)) EXIT, LIM (LIM(EX5,EX2,EX4) - LIM(EX5,EX2,EX3,TRUE)) EXIT, EVSUB(EX5,EX2,EX4) - EVSUB(EX5,EX2,EX3) EXIT, LIST ('DEFINT, EX1, EX2, EX3, EX4), ENDFUN $ PROPERTY INT, ASIN, FUNCTION (EX2, % Local: % EX3), % Fluid WHEN FREE (THIRD(EX2), INDET), WHEN SECOND(EX2)=INDET, APPLY (GET(INTMONTMS,FIRST(EX3)), ADJOIN (THIRD(EX2), ARGEX(EX3))) EXIT, APPLY (GET(INTPWRTMS,FIRST(SECOND(EX2))), ADJOIN (THIRD(EX2), ARGEX(SECOND(EX2)))4 + HALF*EX4)) / EX5 EXIT, WHEN NEGATIVE(EX3), ((EX3+2)*INT1(EX2^(EX3+2)) - SIN(EX4)*EX2^(EX3+1)/EX5) / (EX3+1) EXIT EXIT, ENDFUN $ PROPERTY INTPWR, SIN, FUNCTION (EX4), % Fluid vars from property "INT^": EX2, EX3, EX5 % WCOS, FUNCTION (EX6,EX7), % Fluid vars, from INT and INTPROD: INDET, EX1, EX2, EX3, EX4 % WHEN FREE (EX7:DIF(EX6,INDET), INDET), EX2 * EX4^(INDET-EX6/EX7) * (EX3*EX5*LN(EX4) + EX7*SIN(EX6)) / ((EX5*LN(EX4))^2 + EX7^2) EXIT, ENDFUN $ X1 - EX2/(EX5+1)) / (EX5+1) EXIT, WHEN POSITIVE (EX5), EVSUB (INT1(EXPAND(((INDET-EX4)/EX7)^EX5*LN(INDET))), INDET, EX6) / EX7 EXIT EXIT EXIT, ENDFUN $ PROPERTY INTMONTMS, ^, FUNCTION (EX6, EX7, EX8, EX9), % Fluid vars f (EX1*EX2 - HALF*LN(EX2^2+1)) / EX3 EXIT, ENDFUN $ FUNCTION INTPROD (EX2, EX3, % Local: % EX4, EX5), % Fluid var from INT: INDET % WHEN EX2 = INDET, APPLY (GET(INTMONTMS,FIRST(EX3)), ADJOIN(1,ARGEX(EX3))) EXIT, WHEN POWER(EX2), WHEN NEGATIVE (EX6), WHEN EX6 EQ -1, WHEN EX8 EQ -1, (LN(INDET^2*EX3) - EX9*INT1(EX3)) / (2*EX7 - INDET*(EX4+EX9)) EXIT, (EX7^(EX8+1)/-(EX8+1) - EX9*INT1(EX3) + 2*INT1(EX2*EX7^(EX8+1uid vars from INT & INTPROD: EX2, EX4, INDET % WHEN POSITIVE (EX5), WHEN EX6 = INDET, EX2*SIN(EX6) - EX5*INT1(EX2/INDET*SIN(EX6)) EXIT, WHEN FREE (EX4:DIF(EX6,INDET), INDET), EVSUB (INT1(EXPAND((INDET+INDET*EX4-EX6)^EX5*COS(INDE & INTPROD: EX2, EX3, EX4, EX5, INDET % WHEN POWER(EX3), WHEN FIRST(SECOND(EX3)) EQ 'COS, WHEN SECOND(SECOND(EX3))=EX7, WHEN FREE (EX4:DIF(EX7,INDET), INDET), WHEN POSITIVE (EX5:THIRD(EX3)), WHEN EX6 EQ -1, % File LIM.DIF (c) 03/25/82 The Soft Warehouse % FUNCTION QUERY (EX1, LEX1, LEX2, LEX3, READCHAR), % EX1: relative subexpression % % LEX1: query question % % LEX2: possible responses % % LEX3: AList of previous expressions & answeMBER (READCHAR(), LEX2) EXIT ENDLOOP, PRINTLINE (SCAN), ADJOIN (SCAN, ADJOIN(ADJOIN(EX1,SCAN),LEX3)) ENDFUN$ FUNCTION SIGN(EX1), WHEN ZERO(EX1), EX1 EXIT, WHEN EX1 > 0, 1 EXIT, WHEN EX1 < 0, -1 EXIT, WHEN EX1 EQ PINF, 1 EXIT, WOSITIVE (EX6), WHEN ZERO (EX6+1+2*EX8), WHEN EX6 EQ 1, (LN(EX7) - EX9*INT1(EX3)) / EX5 EXIT EXIT, 2 * (INDET^(EX6-1)*EX7^(EX8+1) + (1-EX6)*(EX7-HALF*INDET*(EX4+EX9)) * INT1(INDET^(EX6-2)*EX3) WHEN POSITIVE(EX6), EVSUB (INT1((INDET-SECOND(EX7)+EX5*INDET)^EX6 * LN(INDET)^EX8), INDET, SECOND(EX7)) / EX5^(EX6+1) EXIT EXIT EXIT EXIT EXIT, ENDFUN $ PROPERTY INTMONTMS, COS, FUNCTION (EX5, EX6), % FlCOS(EX6) EXIT, WHEN FREE (EX4:DIF(EX6,INDET), INDET), EVSUB (INT1(EXPAND((INDET+INDET*EX4-EX6)^EX5*SIN(INDET))), INDET, EX6) / EX4^(EX5+1) EXIT EXIT, ENDFUN $ PROPERTY INTPWRTMS, SIN, FUNCTION (EX6, EX7), % Fluid vars from INT + (EX5-1)*INT1(SECOND(EX2)^(EX6+2)*SECOND(EX3)^(EX5-2))) / (EX6+1) EXIT EXIT, WHEN POSITIVE (EX6), WHEN EX5 EQ -1, ((EX6-1)*INT1(SECOND(EX2)^(EX6-2)*EX3) - SECOND(EX2)^(EX6-1)*SEUE), SPACES (2), PRINTLINE ("???"), PRINT ('ENTER), LOOP SPACES (1), WHEN EMPTY (LEX1) EXIT, PRINT (POP(LEX1)) ENDLOOP, PRINT (LEX2), PRINT ("? "), BLOCK WHEN BELL, PRINT ("") EXIT ENDBLOCK, LOOP WHEN ME))) / (2*EX7-INDET*(EX4+EX9)) EXIT, (2*(INDET^(EX6+1)*EX7^(EX8+1) - 2*(2+EX6+EX8)*EX9*INT1(INDET^(EX6+1)*EX3)) - EX5*(3+EX6+2*EX8)*INT1(INDET^(EX6+2)*EX3)) / (EX6+1) / (2*EX7 - INDET*(EX4+EX9)) EXIT, WHEN P EXIT EXIT EXIT, WHEN POSITIVE (EX8), WHEN LOGARITHM (EX7), WHEN THIRD(EX7) EQ #E, WHEN SECOND(EX7) = INDET, (INDET*EX1 - EX8*INT1(EX1/EX7)) / (EX6+1) EXIT, WHEN FREE (EX5:DIF(SECOND(EX7),INDET), INDET), T))), INDET, EX6) / EX4^(EX5+1) EXIT EXIT, ENDFUN $ PROPERTY INTMONTMS, SIN, FUNCTION (EX5, EX6), % Fluid vars from INT & INTPROD: EX2, EX4, INDET % WHEN POSITIVE (EX5), WHEN EX6 = INDET, EX5*INT1(EX2/INDET*COS(EX6)) - EX2* ((EX5-1)*INT1(EX2*SECOND(EX3)^(EX5-2)) + SECOND(EX2)^(EX6+1)*SECOND(EX3)^(EX5-1)/EX4) / (EX5+EX6) EXIT, WHEN NEGATIVE(EX6), (SECOND(EX2)^(EX6+1)*SECOND(EX3)^(EX5-1)/EX4 rs % % READCHAR: set to FALSE for raw input mode % % RSLT: dotted pair of response and revised AList % WHEN ASSOC(EX1,LEX3), ADJOIN (REST(ASSOC(EX1,LEX3)), LEX3) EXIT, NEWLINE (), PRINT ("???"), SPACES (2), PRTMATH (EX1, 0, 0, TR - (EX6+EX8)*EX9*INT1(INDET^(EX6-1)*EX3)) / EX5 / (EX6 + 2*EX8 + 1) EXIT EXIT EXIT, WHEN FREE (EX7,INDET), WHEN POSITIVE(EX6), WHEN FREE (EX4:DIF(EX8,INDET), INDET), (EX1 - EX6*INT1(EX1/INDET)) / EX4 / LN(EX7)HEN EX1 EQ MINF, -1 EXIT, WHEN EX1 = PINF-MINF, 1 EXIT, EX1: QUERY (EX1, '(SIGN), LIST(0, '+, '-), SIGN), SIGN: REST(EX1), EX1: FIRST(EX1), WHEN ZERO(EX1), EX1 EXIT, WHEN EX1 EQ '+, 1 EXIT, -1 ENDFUN$ FUNCTION ODDEVEN (EX1), WHELIM1: #LIM, INDET % WHEN ZERO(#LIM), LIST ('LIM, EX1*EX2, INDET, 0) EXIT, WHEN ATOM (EX3:DIF(EX1,INDET)/DIF(1/EX2,INDET)), LIM1 (EX3, #LIM-1) EXIT, WHEN SIZE (EX1:DIF(EX2,INDET)/DIF(1/EX1,INDET)) < SIZE(EX3), LIM1 (EX1, #LIM-1) EXIT, WHEN EX5 EQ MZERO, WHEN EX4 EQ PZERO, 0 EXIT, WHEN EX4, EXIT, MZERO EXIT, WHEN MEMBER (EX4, '(FALSE PZERO MZERO)), EX5 EXIT, DENNUM: -30, EX4+EX5 EXIT, WHEN (EX5:LIM1(FIRST(EX1),#LIM)) EQ ? OR EX4 EQ CINF AND MEMBER(E ENDBLOCK ENDLOOP ENDFUN$ PROPERTY LIM, *, FUNCTION ( % Local: % EX2, EX3, EX4, EX5, EX6), % Fluid from LIM & LIM1: EX1, #LIM, INDET % EX2: EX3: EX4: EX5: 1, LOOP WHEN ATOM (EX1:REST(EX1)), WHEN EX2 EQ 1, WHEN EX3 EQ 1, EXX6 EQ PZERO, WHEN POSITIVE(EX5), PZERO EXIT, WHEN NEGATIVE(EX5), MZERO EXIT, 0 EXIT, WHEN EX6 EQ MZERO, WHEN POSITIVE(EX5), MZERO EXIT, WHEN NEGATIVE(EX5), PZERO EXIT, 0 EXIT, WHEN POSITIVE(EX5), MINF EXIT, WHEN NEGATIVE(EX5),IT, SIZE(POP(EX1)) + SIZE(EX1) ENDFUN$ #LIM: 3$ FUNCTION LIM1 (EX1, #LIM), % Fluid var from LIM: INDET % WHEN EX1=INDET, PZERO EXIT, WHEN ATOM(EX1), EX1 EXIT, WHEN APPLY (GET('LIM,FIRST(EX1)), ARGEX(EX1)), EXIT, WHEN INDET, LISTINDET,-1/INDET), #LIM) EXIT, WHEN EX3, LIM1 (EVSUB(EX1,INDET,EX2-INDET), #LIM) EXIT, WHEN INDET, LIM1 (EVSUB(EX1,INDET,EX2+INDET), #LIM) EXIT, LIM1 (EX1, #LIM) ENDFUN$ FUNCTION INDET (EX1, EX2, % Local: % EX3), % Fluid vars from LIM & HEN ZERO(EX3), EX4 EXIT, MINF EXIT, WHEN ZERO(EX3), PINF EXIT, DENNUM: 0, WHEN MEMBER (EX5:INDET(1+EX3/EX2,EX2), '(? PINF MINF)), EX5 EXIT, WHEN EX5 EQ PZERO, WHEN EX4 EQ MZERO, 0 EXIT, WHEN EX4, EXIT, PZERO EXIT, 4, EX4:PZERO EXIT EXIT, WHEN EX5 EQ MZERO, WHEN EX4 EQ PZERO, EX4:0 EXIT, WHEN NOT EX4, EX4:MZERO EXIT EXIT, WHEN EX5 EQ MINF, EX3: EX3+FIRST(EX1) EXIT, WHEN MEMBER(EX4,'(FALSE PZERO MZERO)), EX4:EX5 EXIT, EX4: EX4+EX5 ? EXIT, WHEN MEMBER (EX6, '(CINF PINF PZERO MZERO MINF)), EX5: SIGN(EX4), WHEN EX6 EQ CINF, WHEN ZERO(EX5), ? EXIT, CINF EXIT, WHEN EX6 EQ PINF, WHEN POSITIVE(EX5), PINF EXIT, WHEN NEGATIVE(EX5), MINF EXIT, ? EXIT, WHEN EN NUMBER (EX1), WHEN INTEGER (EX1), WHEN EVEN (EX1), 'E EXIT, 'O EXIT EXIT, EX1: QUERY (EX1, '(ODD,EVEN,OR,NONINTEGER), '(O,E,N), ODDEVEN), ODDEVEN: REST(EX1), FIRST (EX1) ENDFUN$ FUNCTION SIZE (EX1), WHEN ATOM(EX1), 1 EX NUMDEN: 0, NUMNUM: DENDEN: EXPBAS: 30, DENNUM: BASEXP: -30, LOGEXPD: 70, TRGEXPD: 2, BLOCK WHEN EX2 EXIT, EX2: 0 ENDBLOCK, WHEN EX2 EQ PINF, LIM1 (EVSUB(EX1,INDET,1/INDET), #LIM) EXIT, WHEN EX2 EQ MINF, LIM1 (EVSUB(EX1, LIM1 (EX3, #LIM-1) ENDFUN$ PROPERTY LIM, +, FUNCTION ( % Local: % EX2, EX3, EX4, EX5, DENNUM), % Fluid vars from LIM & LIM1: EX1, #LIM, INDET % DENNUM: -30, EX2: EX3: 0, LOOP WHEN ATOM (EX1:REST(EX1)), WHEN ZERO(EX2), WX5,'(CINF,PINF,MINF)) OR EX5 EQ CINF AND NOT(ZERO(EX2) AND ZERO(EX3)), ? EXIT, BLOCK WHEN EX5 EQ CINF, EX4:CINF EXIT, WHEN EX5 EQ PINF, EX2: EX2+FIRST(EX1) EXIT, WHEN EX5 EQ PZERO, WHEN EX4 EQ MZERO, EX4:0 EXIT, WHEN NOT EX4 EXIT, WHEN POSITIVE (EX5:EX5*SIGN(EX4)), PZERO EXIT, WHEN NEGATIVE(EX5), MZERO EXIT, 0 EXIT, WHEN EX3 EQ 1, WHEN POSITIVE (EX5:EX5*SIGN(EX4)), PINF EXIT, WHEN NEGATIVE(EX5), MINF EXIT, CINF EXIT, WHEN (EX6:INDET(EX3,EX2)) EQ ?, ('LIM, EX1, INDET, 0) EXIT, LIST ('LIM, EX1) ENDFUN$ FUNCTION LIM (EX1, % Optional: % INDET, EX2, EX3, % Local: % LOGBAS, PWREXPD, NUMNUM, DENDEN, DENNUM, NUMDEN, BASEXP, EXPBAS, LOGEXPD, TRGEXPD, SIGN, ODDEVEN), LOGBAS: #E, PWREXPD: PINF EXIT, ? EXIT, EX4*EX6 EXIT, WHEN (EX6:LIM1(FIRST(EX1),#LIM)) EQ ?, ? EXIT, BLOCK WHEN EX6 EQ CINF, EX2: EX2*FIRST(EX1), EX5:0 EXIT, WHEN EX6 EQ PINF, EX2: EX2*FIRST(EX1) EXIT, WHEN EX6 EQ PZERO, EX3: EX3*FIRST( WHEN NEGATIVE (EX2:SIGN(EX1+1)), 0 EXIT, WHEN POSITIVE(EX2), CINF EXIT, ? EXIT, WHEN EX1 EQ CINF, WHEN POSITIVE (EX2:SIGN(EX2)), CINF EXIT, WHEN NEGATIVE(EX2), 0 EXIT, 1 EXIT, WHEN EX1 EQ PINF, WHEN POSITIVE (EX2:SIWHEN POSITIVE (EX1:SIGN(EX2)), WHEN (EX2:ODDEVEN(EX2)) EQ 'E, PINF EXIT, WHEN EX2 EQ 'O, MINF EXIT, CINF EXIT, WHEN NEGATIVE(EX1), WHEN (EX2:ODDEVEN(EX2)) EQ 'E, PZERO EXIT, WHEN EX2 EQ 'O, MZERO EXIT, 0 EXITT, WHEN EX1 EQ PINF, PINF EXIT, WHEN MEMBER (EX1, '(CINF MZERO MINF)) OR ZERO(EX2:SIGN(EX1)), CINF EXIT, WHEN NEGATIVE(EX2), ? EXIT, LN(EX1) ENDFUN$ PROPERTY LIM, ASIN, FUNCTION (EX1), WHEN MEMBER (EX1:LIM1(EX1,#LIM), '(? PZERO MN (EX1), WHEN MEMBER (EX1:LIM1(EX1,#LIM), '(? CINF PINF MINF)), ? EXIT, WHEN MEMBER (EX1, '(PZERO, MZERO)), 1 EXIT, COS(EX1) ENDFUN$ RDS ()$ LIM, ^, FUNCTION (EX1, EX2), % Fluid vars from LIM & LIM1: #LIM, INDET % WHEN (EX1:LIM1(EX1,#LIM)) EQ 1, 1 EXIT, WHEN EX1 EQ ? OR MEMBER (EX2:LIM1(EX2,#LIM), '(? CINF)), ? EXIT, WHEN MEMBER (EX2, '(PZERO 0 MZERO)), WHEN MEMBER (EX1, '(PZEEX1 EQ MZERO, CINF EXIT, WHEN MEMBER (EX1, '(CINF MINF)), 0 EXIT, WHEN EX1 EQ PINF OR EX1 EQ #E OR POSITIVE(EX2:SIGN(EX1-1)), PZERO EXIT, WHEN ZERO(EX2), 1 EXIT, WHEN POSITIVE (EX2:SIGN(EX1)), PINF EXIT, WHEN ZERO(EX2), CINF EXIT, EN (EX2:ODDEVEN(EX2)) EQ 'E, PZERO EXIT, WHEN EX2 EQ 'O, MZERO EXIT, 0 EXIT, WHEN NEGATIVE(EX1), WHEN (EX2:ODDEVEN(EX2)) EQ 'E, PINF EXIT, WHEN EX2 EQ 'O, MINF EXIT, CINF EXIT, ? EXIT, WHEN EX1 EQ MINF, TY LIM, !, FUNCTION (EX1), WHEN MEMBER (EX1:LIM(EX1,#LIM), '(? PZERO PINF)), EX1 EXIT, WHEN EX1 EQ MINF OR EX1 EQ MZERO, ? EXIT, EX1 ! ENDFUN$ PROPERTY LIM, LOG, FUNCTION (EX1 % Local: % EX2), WHEN (EX1:LIM1(EX1,#LIM)) EQ PZERO, MINF EXI, '(? PZERO MZERO)), EX1 EXIT, ATAN(EX1) ENDFUN$ PROPERTY LIM, SIN, FUNCTION (EX1), WHEN MEMBER (EX1:LIM1(EX1,#LIM), '(? CINF PINF MINF)), ? EXIT, WHEN MEMBER (EX1, '(PZERO, MZERO)), EX1 EXIT, SIN(EX1) ENDFUN$ PROPERTY LIM, COS, FUNCTIOEX1) EXIT, WHEN EX6 EQ MZERO, EX3: EX3*FIRST(EX1), EX5:-EX5 EXIT, WHEN EX6 EQ MINF, EX2: EX2*FIRST(EX1), EX5:-EX5 EXIT, WHEN ZERO(EX6), EX3: EX3*FIRST(EX1), EX5:0 EXIT, EX4: EX4*EX6 ENDBLOCK ENDLOOP ENDFUN$ PROPERTY N ZERO(EX2), 1 EXIT, WHEN POSITIVE(EX2:SIGN(EX1)), PZERO EXIT, WHEN ZERO(EX2), 0 EXIT, WHEN POSITIVE (EX2:SIGN(EX1+1)), 0 EXIT, WHEN NEGATIVE(EX2), CINF EXIT, ? EXIT, WHEN EX2 EQ MINF, WHEN EX1 EQ PZERO, PINF EXIT, WHEN GN(EX2)), PINF EXIT, WHEN NEGATIVE(EX2), PZERO EXIT, 1 EXIT, WHEN EX1 EQ PZERO, WHEN POSITIVE (EX2:SIGN(EX2)), PZERO EXIT, WHEN NEGATIVE(EX2), PINF EXIT, ? EXIT, WHEN EX1 EQ MZERO, WHEN POSITIVE(EX1:SIGN(EX2)), WH, 1 EXIT, WHEN ZERO(EX1), WHEN POSITIVE(EX1:SIGN(EX2)), WHEN ODDEVEN(EX2) EQ 'E, PZERO EXIT, 0 EXIT, WHEN NEGATIVE(EX1), WHEN ODDEVEN(EX2) EQ 'E, PINF EXIT, CINF EXIT, ? EXIT, EX1^EX2 ENDFUN$ PROPERZERO)), EX1 EXIT, WHEN EX1 EQ PINF OR EX1 EQ MINF, ? EXIT, ASIN(EX1) ENDFUN$ PROPERTY LIM, ATAN, FUNCTION (EX1), WHEN (EX1:LIM1(EX1,#LIM)) EQ PINF, #PI/2 EXIT, WHEN EX1 EQ MINF, -#PI/2 EXIT, WHEN EX1 EQ CINF, ? EXIT, WHEN MEMBER (EX1RO 0 MZERO)), ? EXIT, 1 EXIT, WHEN EX2 EQ PINF, WHEN MEMBER (EX1, '(CINF MINF)), CINF EXIT, WHEN MEMBER (EX1, '(PINF PZERO)), EX1 EXIT, WHEN EX1 EQ MZERO, 0 EXIT, WHEN EX1 EQ #E OR POSITIVE(EX2:SIGN(EX1-1)), PINF EXIT, WHECOND(EX3)^(EX5+1)/EX4) / (EX5+EX6) EXIT, WHEN NEGATIVE (EX5), ((EX6-1)*INT1(SECOND(EX2)^(EX6-2)*SECOND(EX3)^(EX5+2)) - SECOND(EX2)^(EX6-1)*SECOND(EX3)^(EX5+1)/EX4) / (EX5+1) EPWREXPD: LOGEXPD: 6, WHEN FREE (EX4:ANTIDF(EX1), ANTIDF), BLOCK WHEN INTEGER(#LIM) AND EX2 EQ MINF, EX1: LIM (EX4, INDET, EX2) EXIT, EX1: EVSUB (EX4, INDET, EX2) ENDBLOCK, BLOCK WHEN INTEGER(#LIM) AND EX3 EQ PINF, T+1) + EX2), -EX1 EXIT, WHEN ZERO (EVSUB(EX2,INDET,INDET+1) + EX1), -EX2 EXIT, ANTIDF(EX1) + ANTIDF(EX2), ENDFUN $ PROPERTY ANTIDF, *, FUNCTION (EX1, EX2), WHEN FREE(EX1,INDET), EX1*ANTIDF(EX2) EXIT, WHEN FREE(EX2,INDET), EX2*ANTIDF(EX1)EX2: EX2 + 1, ENDLOOP EXIT, WHEN FREE (EX4:ANTIDV(EX1), ANTIDV), WHEN INTEGER(#LIM), LIM(EX4,INDET,EX3+1) / LIM(EX4,INDET,EX2) EXIT, EVSUB(EX4,INDET,EX3+1) / EVSUB(EX4,INDET,EX2) EXIT, WHEN APPLY(GET('PROD,FIRST(EX1)), ARGEX(EX1)) 1)*EX2) EQ 1, 1/EX1 EXIT, WHEN EXPD(EVSUB(EX2,INDET,INDET+1)*EX1) EQ 1, 1/EX2 EXIT, ANTIDV(EX1) * ANTIDV(EX2), ENDFUN $ PROPERTY ANTIDV, ^, FUNCTION (EX1, EX2, INDET2), WHEN FREE(EX2,INDET), ANTIDV(EX1)^EX2 EXIT, INDET2: 'INDET2, WHENEX5+1) EXIT EXIT, WHEN NEGATIVE (EX6), WHEN NEGATIVE(EX5), ((EX5+EX6+2)*INT1(SECOND(EX2)^(EX6+2)*EX3) + SECOND(EX2)^(EX6+1)*SECOND(EX3)^(EX5+1)/EX4) / (EX6+1) EXIT EXIT EXIT EXIT EXMDEN, PWREXPD, LOGEXPD), WHEN INTEGER(EX2) AND INTEGER(EX3), EX4: 0, LOOP WHEN EX2 > EX3, EX4 EXIT, EX4: EX4 + EVSUB(EX1,INDET,EX2), EX2: EX2 + 1, ENDLOOP EXIT, NUMNUM: DENDEN: 30, DENNUM: -30, NUMDEN: 0, 'SIGMA, EX1,INDET,EX2,EX3), ENDFUN $ FUNCTION ANTIDF (EX1), WHEN EX1 = INDET, EX1*(-1+EX1)/2 EXIT, WHEN FREE(EX1,INDET), INDET*EX1 EXIT, SIMPU(ANTIDF,EX1) ENDFUN $ PROPERTY ANTIDF, +, FUNCTION (EX1, EX2), WHEN ZERO (EVSUB(EX1,INDET,INDE EX1^EX2/(EX1^EX3 - 1) EXIT, ENDFUN $ FUNCTION PROD (EX1, INDET, EX2, EX3, % Local: % EX4, LOGEXPD), WHEN INTEGER(EX2) AND INTEGER(EX3), EX4: 1, LOOP WHEN EX2 > EX3, EX4 EXIT, EX4: EX4 * EVSUB(EX1,INDET,EX2), UN $ PROPERTY ANTIDV, +, FUNCTION (EX1, EX2), WHEN EX1=INDET AND FREE(EX2,INDET), (EX1-1+EX2)! EXIT, WHEN EX2=INDET AND FREE(EX1,INDET), (EX2-1+EX1)! EXIT, ENDFUN $ PROPERTY ANTIDV, *, FUNCTION (EX1, EX2), WHEN EXPD(EVSUB(EX1,INDET,INDET+XIT EXIT, WHEN EX6 EQ -1, WHEN EX5 EQ -1, FALSE EXIT, WHEN NEGATIVE (EX5), ((EX5+EX6+2)*INT1(EX2*SECOND(EX3)^(EX5+2)) - SECOND(EX2)^(EX6+1)*SECOND(EX3)^(EX5+1)/EX4) / (% File: SIGMA.ALG (c) 03/01/82 The Soft Warehouse % FUNCTION LINCF (EX1, INDET), WHEN FREE (EX1:(EX1-EVSUB(EX1,INDET,0))/INDET, INDET), EX1 EXIT, ENDFUN$ FUNCTION SIGMA (EX1, INDET, EX2, EX3, % Local: % EX4, NUMNUM, DENDEN, DENNUM, NU EX4: LIM (EX4, INDET, EX3) EXIT, EX4: EVSUB (EX4, INDET, EX3+1) ENDBLOCK, WHEN INTEGER(#LIM) AND (EX2 EQ MINF OR EX3 EQ PINF), LIM (EX4-EX1) EXIT, EX4-EX1 EXIT, WHEN APPLY(GET('SIGMA,FIRST(EX1)), ARGEX(EX1)) EXIT, LIST( EXIT, ENDFUN $ PROPERTY ANTIDF, ^, FUNCTION (EX1, EX2, EX3), WHEN EX1 = INDET AND POSITIVE(EX2), (EX3:PROD(INDET-'##,'##,0,EX2-1)) * (INDET-EX2)/(1+EX2) + ANTIDF(EX1^EX2-EX3) EXIT, WHEN FREE(EX1,INDET) AND (EX3: LINCF(EX2,INDET)), EXIT, LIST ('PROD, EX1, INDET, EX2, EX3), ENDFUN $ %************** Optional ANTIDV (PROD) Package ****************% FUNCTION ANTIDV (EX1), WHEN EX1=INDET, (EX1-1)! EXIT, WHEN FREE(EX1,INDET), EX1^INDET EXIT, SIMPU (ANTIDV, EX1) ENDFIT EXIT, ENDFUN $ RDS () $   ADIOS DISK COPY UTILITY, 05/11/81  TYPE TO ABORT COPY, OTHERWISE ENTER  SOURCE DRIVE NUMBER: Lw  TARGET DRIVE NUMBER: Lx  wx   TYPE TO BEGIN; TO ABORT COPY; OR A TO CHANGE Lr*L*Ȅʩɩ˱ȑ˥ɶL ʪȱʆʅ` ʪȱʆʅ` :L- :L= PL- PL=  _  *  ' z  L5! L  _ r JA D 'ˑʑɑȑʥ` L     a`ȅʩGɅ ) X7: EX7 + EX6 * EVSUB (EX1, EX2, EX3), WHEN EX5=EX4, EX7 EXIT, EX1: DIF (EX1, EX2), EX5: EX5 + 1, EX6: EX6 * (EX2-EX3) / EX5 ENDLOOP EXIT, LIST ('TAYLOR, EX1, EX2, EX3, EX4) ENDFUN $ RDS () $ )ԭwx   iL  DISK COPY COMPLETE; MORE (Y/N)? Y N ?L@  L L ? RETURN TO CONTINUE, ESC TO ABORT;    DISK COPY ABORTED; MORE (Y/N)? L@  `  INSERT DISK IN DRIVE 1 `  INSERT g߅ggigggg 0 HFΥϥ  L  /hȩI * ;L<HHHGHHHȍHHH ' r ' ' ;L  < HL;  <L; JA DLx*  & M  & ‘% File: TAYLOR.DIF (c) 08/21/81 The Soft Warehouse % FUNCTION TAYLOR (EX1, EX2, EX3, EX4, % Local % EX5, EX6, EX7, NUMNUM, DENNUM), WHEN POSITIVE (EX4) OR ZERO (EX4), NUMNUM: DENNUM: 30, EX5: EX7: 0, EX6: 1, LOOP E^#V#K6 K))))oK!s#r#!4K!6 iV6#iiɷ!Fʁ!:? ƒOʛw> $z$z$>=$w>$V#^#~#Nڋ"z${ $>=$!N ~ʄ#fo÷!$7!I!R"*L">DRIVE REQUEST:  L LX ?L IрI(恩Ł襁& INSUFFICIENT GOOD RAM FOR COPY!Lyf kngw =kgi)gff#)׭yfwx   i kngx =kgi)gfyf# FREE(EX1,INDET), EX1^SIGMA(EVSUB(EX2,INDET,INDET2-1),INDET2,1,INDET) EXIT, ENDFUN $ RDS () $ %ȩɠܑܥݑܘܩGܱȑ ȑ ȑܥɑ U吴ޅ E iȐɥ` ʑȥˑ` ȑȥɑ` ȑȥɑ`     ` ߰"L3 p&L3 %L* GL* p& ^L3 p&L* p& ^L* p&  Z)L*  L  qL  $L* ~& <7͞>?$_   !"> _  a_!~> b5*~#"B|i}WvƐ'@'OÎ~#͍Ɛ':'$ͨ_ > $> $ |̈́}Ä $>.$z{ , 0 !))))o1 DISK IN DRIVE 1 ` ? 17H h)8H h(`)d`)P)@cbxL5s `RT $I$I$UUU$$A$