Έχουν δημοσιευτεί Κυριακή, 25 Φεβρουαρίου 2007 12:18 μμ από το μέλος PALLADIN

BigInteger

Επιτέλους, στο .Net Framework 3.5 υπάρχει BigInteger type και κατοικεί στο namespace System.Numeric.
Τώρα πια μπορούμε να αποθηκεύουμε και να διαχειριζόμαστε arbitary size ακέραιους, χωρίς unexpected overflows.
(Remark: ο BigInteger είναι ένα abstraction και είναι φυσικό να είναι αρκετά πιο αργός σε σχέση με τους άλλους primitive ακέραιους int, long)
Η ομάδα σχεδιασμού του BigInteger έχει κάνει overload αρκετούς operators, με αποτέλεσμα ο κώδικας να είναι καθαρός και να εκφράζει την επιθυμητή ενέργεια.
(Remark: Η δύναμη του operator overloading in use)

Τον τελευταίο καιρό αναπτύσσω σε F# μια βιβλιοθήκη με διαφορα infinite streams αριθμών.
Η F# περιέχει τον δικό της BigInt type στο namespace Microsoft.FSharp.Μath και μπορούμε να τo χρησιμοποιήσουμε και σε αλλα .Net projects.
Ένα απλό code sample σε C# 3.0

    public static IEnumerable<BigInt> NaturalNumbers()
    {
      BigInt number = BigIntModule.zero;
      while(true)
      {
        number += BigIntModule.one;
        yield return number;
      }
    }

    public static IEnumerable<BigInt> OddNumbers()
    {
      BigInt two = BigIntModule.of_int(2);
      return NaturalNumbers().Select(number => two * number + BigIntModule.one);
    }

    public static IEnumerable<BigInt> EvenNumbers()
    {
      BigInt two = BigIntModule.of_int(2);
      return NaturalNumbers().Select(number => two * number);
    }

(Remark: BigInteger type μπορούμε να βρούμε και στην J#, αλλα δεν υποστηρίζει operator overloading)

Happy Coding...

Share


Ενημέρωση για Σχόλια

Αν θα θέλατε να λαμβάνετε ένα e-mail όταν γίνονται ανανεώσεις στο περιεχόμενο αυτής της δημοσίευσης, παρακαλούμε γίνετε συνδρομητής εδώ

Παραμείνετε ενήμεροι στα τελευταία σχόλια με την χρήση του αγαπημένου σας RSS Aggregator και συνδρομή στη Τροφοδοσία RSS με σχόλια

Σχόλια:

Χωρίς Σχόλια

Ποιά είναι η άποψή σας για την παραπάνω δημοσίευση;

(απαιτούμενο)
απαιτούμενο
προαιρετικό
απαιτούμενο
ÅéóÜãåôå ôïí êùäéêü:
CAPTCHA Image