' "COMPLEX NUMBERS, IN POLAR OR RECTANGULAR FORMAT EL1 -- ATOM, POLAR OR RECTANGULAR EL2 -- FIX/FLOAT, REAL PART IF RECTANGULAR, MAGN, IF POLAR EL3 -- FIX/FLOAT, IMAG PART IF RECTANGULAR, PHASE, IF POLAR " ATOM [2 ]>> ATOM [2 >]>> RCPX #DECL ("VALUE" FORM "QUOTE" ANY "QUOTE" ANY) CHTYPE VECTOR RECTANGULAR CPX]>)> PCPX #DECL ("VALUE" FORM "QUOTE" ANY "QUOTE" ANY) CHTYPE VECTOR POLAR CPX]>)> "ARRAY OF COMPLEX NUMBERS, COMPACTED EL1 -- ATOM, POLAR OR RECTANGULAR EL2 -- REAL ARRAY IF RECTANGULAR, MAGN ARRAY IF POLAR EL3 -- IMAG ARRAY IF RECTANGULAR, PHASE ARRAY IF POLAR " RUCPX #DECL ("VALUE" UCPX "TUPLE" TUPLE) RECTANGULAR INVALID-ARGS RUCPX % POLAR PUCPX % % % #FALSE () UCPX UNKNOWN-COMPLEX-TYPE FL UVECTOR UNKNOWN-TYPE-OF-COMPLEX REAL IMAG CPX FLOAT T C+ C- MAGN PHASE C* C/ ATTEMPT-TO-USE-IMAGINARY-POWER C** FIX XY RT]>> .GLUE > > \ < OR CPX UCPX>)] 226>> CSET #DECL ("VALUE" FORM "QUOTE" ANY "QUOTE" ANY) PROG () PUT]>)> "C+ -- ADDS COMPLEX QUANTITIES. ALWAYS RETURNS FIRST QUANTITY GIVEN, CHANGED TO CONTAIN THE SUM OF ALL ARGS IF FIRST ARG IS UCPX, WILL PERFORM ELEMENT-BY-ELEMENT SUM WITH OTHER UCPX'S IN ARG TUPLE, AND ADD VALUES OF ANY SINGLE COMPLEX QUANTITIES TO EACH ELEMENT OF FIRST ARG. " ATOM > >>> "TUPLE" TUPLE)] 281>> \ ATOM > >>> "TUPLE" TUPLE)] 1174>> \ ATOM > >>> "TUPLE" TUPLE)] 2352>> \ ATOM > >>> "TUPLE" TUPLE)] 3477>> \ ATOM > >>> "TUPLE" TUPLE)] 4798>> \ REAL #DECL ("VALUE" FORM "QUOTE" ANY) COND ==? RECTANGULAR POLAR TYPE? UVECTOR XY ELSE RPRT ERROR UNKNOWN-TYPE-OF-COMPLEX REAL]>)> IMAG #DECL ("VALUE" FORM "QUOTE" ANY) COND ==? RECTANGULAR POLAR TYPE? UVECTOR XY ELSE IMRT ERROR UNKNOWN-TYPE-OF-COMPLEX IMAG]>)> MAGN #DECL ("VALUE" FORM "QUOTE" ANY) COND ==? POLAR RECTANGULAR TYPE? UVECTOR RT ELSE MGXY ERROR UNKNOWN-TYPE-OF-COMPLEX MAGN]>)> PHASE #DECL ("VALUE" FORM "QUOTE" ANY) COND ==? POLAR RECTANGULAR TYPE? UVECTOR RT ELSE PHXY ERROR UNKNOWN-TYPE-OF-COMPLEX PHASE]>)> MGXY #DECL ("VALUE" FORM "QUOTE" ANY "QUOTE" ANY) COND TYPE? FIX SQRT + * FLOAT ELSE]>)> PHXY #DECL ("VALUE" FORM "QUOTE" ANY "QUOTE" ANY) + COND L? ELSE TYPE? FIX 0? * / ABS ATAN FLOAT =? ]>)> RPRT #DECL ("VALUE" FORM "QUOTE" ANY "QUOTE" ANY) COND TYPE? FIX * FLOAT COS ELSE]>)> IMRT #DECL ("VALUE" FORM "QUOTE" ANY "QUOTE" ANY) COND TYPE? FIX * FLOAT SIN ELSE]>)> \ UVFIX #DECL ("VALUE" FORM "QUOTE" ANY) COND ==? UTYPE FIX ELSE MAPR #FALSE () FUNCTION E #DECL ((E) < PRIMTYPE UVECTOR>) PUT LVAL + CHTYPE FLOAT CHUTYPE]>)> UVFLOAT #DECL ( "VALUE" FORM "QUOTE" ANY) COND ==? UTYPE FLOAT ELSE MAPR #FALSE () FUNCTION E # DECL ((E) ) PUT LVAL CHTYPE FIX CHUTYPE]>)> VFLOAT #DECL ( "VALUE" FORM "QUOTE" ANY) MAPR #FALSE () FUNCTION E #DECL ((E) ) PUT LVAL FLOAT]>)> VFIX #DECL ("VALUE" FORM "QUOTE" ANY) MAPR #FALSE () FUNCTION E #DECL ((E) ) PUT LVAL FIX +]>)> \ FIXIFY #DECL ( "VALUE" FORM "QUOTE" ANY) FIX +]>)> \ ANY)] 6475>> \ ANY)] 6979> > .GLUE > \ FX #DECL ("VALUE" FORM "QUOTE" ANY) COND TYPE? CPX VFIX REST UCPX UVFIX ELSE ERROR UNKNOWN-COMPLEX-TYPE FX]>)> FL #DECL ("VALUE" FORM "QUOTE" ANY) COND TYPE? CPX VFLOAT REST UCPX UVFLOAT ELSE ERROR UNKNOWN-COMPLEX-TYPE FL]>)> ** #DECL ("VALUE" FORM "QUOTE" ANY "QUOTE" ANY) COND 0? 1? ELSE EXP * LOG]>)>