Веб Зображення Новини Групи Блоги Перекладач Gmail Ще »
Групи, які ви переглядали нещодавно | Довідка | Увійти
Головна сторінка Груп Google
Rational -> Double conversion?
Занадто багато тем, що мають бути показані першими. Для того, щоб показати тему першою, зніміть цю опцію з іншої теми.
Під час обробки вашого запиту сталася помилка. Будь ласка, повторіть вашу спробу пізніше.
флаг
  6 повідомлення - Згорнути всі  -  Перекласти все вказаною мовою: Перекладено (переглянути всі оригінали)
Група, до якої ви додаєте допис, - група Usenet. Відтак, будь-хто в Інтернеті бачитиме вашу електронну адресу.
Вашу відповідь не було надіслано.
Ваш допис надіслано
 
Від:
Кому:
Копія:
Продолжить:
Додати копію: | Додати продовження: | Редагувати тему
Тема:
Підтвердження:
З метою підтвердження введіть символи, наведені на зображенні нижче, або числа, які чуєте, натиснувши значок доступу. Прослухайте і введіть цифри, що чуєте
 
Hello Haskellers,

I'm a novice Haskell user.  I'm wondering how to get an approximate
value in Double of a Rational.   I'm doing a little numerical
calculation using Rational to avoid truncation error, but want the
final results printed as Doubles that approximate original Rationals.
(I need this to read the results in Fortran.)

I imagine there already exists a function that returns the best
approximation in Double of a Rational, but I've failed to find one  (I
looked into a documentation of Data.Ratio module, Prelude, and some
other online resources as well as "Real World Haskell").  Could
somebody help?

Regards,
Ryo


Ви мусите увійти перед публікацією повідомлень.
Аби надіслати допис, будь ласка, спочатку приєднайтеся до цієї групи.
Будь ласка, поновіть своє прізвисько на сторінці налаштування передплати перед тим, як надіслати свій допис.
У вас немає права надсилання дописів до цієї групи.
Michael Karcher  
Переглянути профіль   Перекласти вказаною мовою: Перекладено (переглянути оригінал)
 Більше налаштувань 8 Жов, 13:02
Групи новин: comp.lang.haskell
Від: use...@mkarcher.dialup.fu-berlin.de (Michael Karcher)
Дата: 8 Oct 2009 10:02:43 GMT
Місцевий час: Чт 8 Жов 2009 13:02
Тема: Re: Rational -> Double conversion?
Ryo <fu...@hawaii.edu> wrote:
> I imagine there already exists a function that returns the best
> approximation in Double of a Rational, but I've failed to find one

It's
  fromRational :: (Fractional a) => Rational -> a

Regards,
  Michael Karcher


Ви мусите увійти перед публікацією повідомлень.
Аби надіслати допис, будь ласка, спочатку приєднайтеся до цієї групи.
Будь ласка, поновіть своє прізвисько на сторінці налаштування передплати перед тим, як надіслати свій допис.
У вас немає права надсилання дописів до цієї групи.
Michael Karcher  
Переглянути профіль   Перекласти вказаною мовою: Перекладено (переглянути оригінал)
 Більше налаштувань 8 Жов, 16:07
Групи новин: comp.lang.haskell
Від: use...@mkarcher.dialup.fu-berlin.de (Michael Karcher)
Дата: 8 Oct 2009 13:07:33 GMT
Місцевий час: Чт 8 Жов 2009 16:07
Тема: Re: Rational -> Double conversion?

Michael Karcher <use...@mkarcher.dialup.fu-berlin.de> wrote:
> It's
>   fromRational :: (Fractional a) => Rational -> a

Just as an Hint how to find that: Use Hoogle.
  http://www.haskell.org/hoogle
Enter the type of the function you look for (Rational->Double).
First two hits are fromRat and fromRational. It might be that
fromRat is more efficient then fromRational, as fromRat requires
(RealFrac a) instead of just (Fractional a).

Regards,
  Michael Karcher


Ви мусите увійти перед публікацією повідомлень.
Аби надіслати допис, будь ласка, спочатку приєднайтеся до цієї групи.
Будь ласка, поновіть своє прізвисько на сторінці налаштування передплати перед тим, як надіслати свій допис.
У вас немає права надсилання дописів до цієї групи.
On Oct 8, 3:07 am, use...@mkarcher.dialup.fu-berlin.de

> Just as an Hint how to find that: Use Hoogle.
>  http://www.haskell.org/hoogle
> Enter the type of the function you look for (Rational->Double).
> First two hits are fromRat and fromRational. It might be that
> fromRat is more efficient then fromRational, as fromRat requires
> (RealFrac a) instead of just (Fractional a).

Thank you for your response!  I'll use Hoogle next time.  Without
knowing fromRat[ional], I was using such a tedious function as

             rat_to_frac r =
                 (fromIntegral (numerator r))
                 / (fromIntegral (denominator r))

Regards,
Ryo


Ви мусите увійти перед публікацією повідомлень.
Аби надіслати допис, будь ласка, спочатку приєднайтеся до цієї групи.
Будь ласка, поновіть своє прізвисько на сторінці налаштування передплати перед тим, як надіслати свій допис.
У вас немає права надсилання дописів до цієї групи.

Michael Karcher <use...@mkarcher.dialup.fu-berlin.de> wrote:
> Michael Karcher <use...@mkarcher.dialup.fu-berlin.de> wrote:
>>   fromRational :: (Fractional a) => Rational -> a
> It might be that fromRat is more efficient then fromRational, as
> fromRat requires (RealFrac a) instead of just (Fractional a).

The library code uses fromRat for fromRational in the instance for
Double, so in terms of efficiency, they should be the same.

BTW, one can also convert a Double to a fraction:

Prelude> toRational pi
884279719003555%281474976710656

- Dirk


Ви мусите увійти перед публікацією повідомлень.
Аби надіслати допис, будь ласка, спочатку приєднайтеся до цієї групи.
Будь ласка, поновіть своє прізвисько на сторінці налаштування передплати перед тим, як надіслати свій допис.
У вас немає права надсилання дописів до цієї групи.
Тему обговорення змінено на "Double -> Rational conversion?" учасником Hans Aberg
Hans Aberg  
Переглянути профіль   Перекласти вказаною мовою: Перекладено (переглянути оригінал)
 Більше налаштувань 9 Жов, 11:45
Групи новин: comp.lang.haskell
Від: Hans Aberg <haberg_20080...@math.su.se>
Дата: Fri, 09 Oct 2009 10:45:19 +0200
Місцевий час: Пт 9 Жов 2009 11:45
Тема: Re: Double -> Rational conversion?

Dirk Thierbach wrote:
> BTW, one can also convert a Double to a fraction:

> Prelude> toRational pi
> 884279719003555%281474976710656

If one wants to have a series of approximants, one can use continued
fraction convergents. There is a fast algorithm on the Wikipedia page.

I have found it useful in music. For example, in my program:
   > crat(cf (logBase 2 (3/2)) 8)
   [0 % 1,1 % 1,1 % 2,3 % 5,7 % 12,24 % 41,31 % 53,179 % 306]
Here, "cf x n" computes n continued fractions of the Double x, and
"crat" computes the convergents: the rational numbers.

Anyway, above I computed the continued fractions of logBase 2 (3/2).
This gives the n-ET (equal temperaments) that approximates the Just
perfect fifth interval ratio 3/2 well. The numerator is the key in this
tuning. So 7%12 is recognized as key 7 in E12 (or 12-ET). The others,
E41 and E53 are also well known; the latter is used in a description of
Turkish music. E53 is such an exact approximation of Pythagorean tuning
that there is no point going higher in music.

   Hans


Ви мусите увійти перед публікацією повідомлень.
Аби надіслати допис, будь ласка, спочатку приєднайтеся до цієї групи.
Будь ласка, поновіть своє прізвисько на сторінці налаштування передплати перед тим, як надіслати свій допис.
У вас немає права надсилання дописів до цієї групи.
Кінець повідомлень
« Повернутися до обговорень « Новіша тема     Старіша тема »

Створити групу - Групи Google - Домашня сторінка Google - Правила користування послугою - Заява про конфіденційність і нерозголошення інформації
©2009 Google