Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re: perl6 rational number problem

by NetWallah (Canon)
on Nov 21, 2017 at 05:42 UTC ( #1203861=note: print w/replies, xml ) Need Help??


in reply to perl6 rational number problem

You will first need to fix your example. Here is what I get when I tried your syntax:
> my Rat @example = 1 , * ** 0.9999 ... Inf; [...] > @example[^4] Type check failed in assignment to @example; expected Rat but got Int in block <unit> at <unknown file>:1
So the initial assignment is failing because "1" is not a Rat. That piece can be fixed, and re-tried:

> my Rat @example = 1.0, * ** 0.9999 ... Inf; [...] > @example[^4] Type check failed in assignment to @example; expected Rat but got Num in block <unit> at <unknown file>:1 > @example[0] 1
A little further that time .. We successfully assigned "1" to @example[0], but that is all. The next element is a "Num", not a Rat, so the assignment failed.

Another problem with the sequence is that it is not increasing to Infinity. Not sure what the intent is here.

If you use an increasing Rat sequence, it works:

> my Rat @example = 1.0, * += 0.9999 ... Inf; [...] > @example[^4] (1 1.9999 2.9998 3.9997)

                All power corrupts, but we need electricity.

Replies are listed 'Best First'.
Re^2: perl6 rational number problem
by freakcoco (Sexton) on Nov 21, 2017 at 15:49 UTC
    Yes
    I need to fix my question.
    exponentiation not in range of rational number(something like 2.sqrt() , and there have no exponentiation base stored in perl6 and most of program language, maybe there have moudle handle that)
    this is my question
    ration number on the common operator
    Addition 、 Subtraction 、Multiplication 、 Division 、 Modulo
    online run
    my Rat @ex01 = 1.0 , * + 0.9999 ... Inf; my Rat @ex02 = 1.0 , * - 0.9999 ... Inf; my Rat @ex03 = 1.0 , * * 0.9999 ... Inf; my Rat @ex04 = 1.0 , * / 0.9999 ... Inf; my Rat @ex05 = 1.0 , * % 0.9999 ... Inf; my %ex = :add(@ex01), :substrat(@ex02), :mult(@ex03), div(@ex04), mod(@ex05); try { for < add substrat mult div mod > -> $op { for 1 .. 20 -> $count { "$op $count".say; (%ex{$op})[$count] } } }
    this try will fail in Multiplication and Division.
    why?
      You need FatRats.
      > my @a = 1.0, * * 0.9999... *; [...] > my @b = FatRat(1.0), * * 0.9999... *; [...] > say $_, ' ', $_.WHAT for @a[^10]; 1 (Rat) 0.9999 (Rat) 0.99980001 (Rat) 0.999700029999 (Rat) 0.9996000599960001 (Rat) 0.99950009999 (Num) 0.999400149980001 (Num) 0.999300209965003 (Num) 0.999200279944007 (Num) 0.999100359916013 (Num) > say $_, ' ', $_.WHAT for @b[^10]; 1 (FatRat) 0.9999 (FatRat) 0.99980001 (FatRat) 0.999700029999 (FatRat) 0.9996000599960001 (FatRat) 0.99950009999000049999 (FatRat) 0.999400149980001499940001 (FatRat) 0.9993002099650034997900069999 (FatRat) 0.99920027994400699944002799920001 (FatRat) 0.999100359916012598740083996400089999 (FatRat)

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1203861]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (7)
As of 2018-07-18 15:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    It has been suggested to rename Perl 6 in order to boost its marketing potential. Which name would you prefer?















    Results (393 votes). Check out past polls.

    Notices?