14

Standardowa Haskell'a Double wykorzystuje the standard double-precision arithmetic:Czy w GHC/Haskell można zastosować arytmetykę zmiennoprzecinkową z dużą precyzją (80 bitów)?

data Double podwójnej precyzji liczb zmiennoprzecinkowych. Pożądane jest, aby ten typ był co najmniej równy w zakresie i precyzji dla typu podwójnej precyzji IEEE.

Czy GHC/Haskell oferuje gdzieś także liczby zmiennoprzecinkowe extended precision (80-bit), być może przy użyciu biblioteki zewnętrznej?

+4

Zobacz: [GHC# 3353: Dodaj obsługę "CLDouble"] (http://hackage.haskell.org/trac/ghc/ticket/3353) – hammar

+0

Zobacz także [** this **] (http: // hackage.haskell.org/package/numbers-3000.0.0.0) – chuff

Odpowiedz

10

Jak zauważył chuff, możesz chcieć rzucić okiem na pakiet numbers w hakowaniu. Możesz zainstalować go pod numerem cabal install numbers. Oto przykład:

import Data.Number.CReal -- from numbers 

main :: IO() 
main = putStrLn (showCReal 100 (sqrt 2)) 

-- output: 1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727 

Jak documentation stanach showCReal zwraca ciąg przedstawiający daną liczbę typu CReal z danej liczby miejsc po przecinku.

+1

Sądzę, że zakładałem, że rozmawiam z początkującym ... tak czy inaczej. ;) –

+6

Nie sądzę, że szuka arbitralnej precyzji, tylko sposób na wykorzystanie 80-bitowych możliwości zmiennoprzecinkowych najpopularniejszych procesorów. – hammar

+1

Tak, dzięki za wskaźnik do _numbers_, może się przydać, ale teraz szukam właśnie 80-bitowej arytmetyki zmiennoprzecinkowej. –

Powiązane problemy