1. Re: I Need Help - BUG REPORT!

Larry D Poos wrote:

> atom x,z
> sequence bool
> bool = {"Fail","Pass"}
>
> -- modulo congruence test
> x = remainder(3,7)
> printf(1,"\nmodulo test 1\n %s for  3mod7=%d\n",{bool[x=3],x})

Why do you assign x=3?
"bool" has only a length of 2, and second you can't assign
there (it's not like C).
Maybe you could use something like this:

        correct_answer = 3
        x = remainder(3,7)
        y = 1
        if x = correct_answer then
                y = 2
        end if
        printf(1, "\nmodulo test 1\n %s for 3mod7=%d\n", {bool[y+1],x})


> -- All numbers ending in .0 should display on screen
> -- only 0, 19, and 4819 display in all three forms of the alogrithm
> --
> puts(1,"\nDivision by 1 test\n")
> for l=0  to 10000  by .1  do
>     if not remainder(l,1) then -- handle only if evenly divisable by 1
>         printf(1," pass for %g floor=%g\n",{l,floor(l)})
>     end if
> end for
> puts(1,"Fail for all between 0 and 10000 not listed\n")

***************************************************************************
        Mmhhh.... I don't know why only 0,19 and 4819 divided by 1 have a
remainder of 1 ?! I guess it's a BUG!!! Let's Rob Craig answers this
one.
***************************************************************************


> puts(1,"\nFloor equality test\n")
> for l=0  to 10000  by .1  do
>     if floor(l)=l then  -- handle only if floor is equal to base number
>         printf(1," pass for %e floor=%e\n",{l,floor(l)})
>     end if
> end for

        floor(l) = 1 only for "l" being between 1 and 1.99999. floor(x) returns
the bigest integer that is smaller than "x".


> puts(1,"\nNumber equality test\n")
> x=0
> while x < 10000.1 do
>     z=floor(x)
>     if not(z!=x) then  -- handle only if equal
>         printf(1," pass for %e floor=%e\n",{x,floor(x)})
>     end if
>     x=x+.1
> end while
> puts(1,"Fail for all between 0 and 10000 not listed\n")
> -- end code segment

        You could test like this:
        x = 0
        while x < 10000.1 do
                if floor(x) = x then
                        printf(1, "pass for %e floor=%e\n", {x, floor(x)})
                end if
                x = x + .1
        end while

--
Regards,
        Daniel Berstein
        architek at geocities.com
        http://www.geocities.com/SiliconValley/Heights/9316

new topic     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu