61 lines
2.5 KiB
Rexx
61 lines
2.5 KiB
Rexx
/* REXX ---------------------------------------------------------------
|
|
* 22.06.2014 Walter Pachl using a complex data class
|
|
* ooRexx Distribution contains an elaborate complex class
|
|
* parts of which are used here
|
|
* see REXX for Extra Credit implementation
|
|
*--------------------------------------------------------------------*/
|
|
Numeric Digits 1000
|
|
Call test_integer .complex~new(1e+12,0e-3)
|
|
Call test_integer .complex~new(3.14)
|
|
Call test_integer .complex~new(1.00000)
|
|
Call test_integer .complex~new(33)
|
|
Call test_integer .complex~new(999999999)
|
|
Call test_integer .complex~new(99999999999)
|
|
Call test_integer .complex~new(1e272)
|
|
Call test_integer .complex~new(0)
|
|
Call test_integer .complex~new(1.000,-3)
|
|
Call test_integer .complex~new(1.000,-3.3)
|
|
Call test_integer .complex~new(,4)
|
|
Call test_integer .complex~new(2.00000000,+0)
|
|
Call test_integer .complex~new(,0)
|
|
Call test_integer .complex~new(333)
|
|
Call test_integer .complex~new(-1,-1)
|
|
Call test_integer .complex~new(1,1)
|
|
Call test_integer .complex~new(,.00)
|
|
Call test_integer .complex~new(,1)
|
|
Call test_integer .complex~new(0003,00.0)
|
|
Exit
|
|
|
|
test_integer:
|
|
Use Arg cpx
|
|
cpxa=left(changestr('+-',cpx,'-'),13) -- beautify representation
|
|
Select
|
|
When cpx~imaginary<>0 Then
|
|
Say cpxa 'is not an integer'
|
|
When datatype(cpx~real,'W') Then
|
|
Say cpxa 'is an integer'
|
|
Otherwise
|
|
Say cpxa 'is not an integer'
|
|
End
|
|
Return
|
|
|
|
::class complex
|
|
|
|
::method init /* initialize a complex number */
|
|
expose real imaginary /* expose the state data */
|
|
use Strict arg first=0, second=0 /* access the two numbers */
|
|
real = first + 0 /* force rounding */
|
|
imaginary = second + 0 /* force rounding on the second */
|
|
|
|
::method real /* return real part of a complex */
|
|
expose real /* access the state information */
|
|
return real /* return that value */
|
|
|
|
::method imaginary /* return imaginary part */
|
|
expose imaginary /* access the state information */
|
|
return imaginary /* return the value */
|
|
|
|
::method string /* format as a string value */
|
|
expose real imaginary /* get the state info */
|
|
return real'+'imaginary'i' /* format as real+imaginaryi */
|