2013-07-10 5 views
15

* big.Int की अधिकतम मूल्य और * big.Rat की अधिकतम परिशुद्धता क्या है?Golang, गणित/बड़ा: * big.Int की अधिकतम मूल्य क्या है

+0

जो इन सभी सवालों और उत्तरों को टैग टैग पर डाउनवॉट कर रहा है? यह सवाल पूरी तरह मान्य है! – thwd

उत्तर

14

यहाँ संरचना परिभाषाएं दी गई हैं:

// A Word represents a single digit of a multi-precision unsigned integer. 
type Word uintptr 

type nat []Word 

type Int struct { 
    neg bool // sign 
    abs nat // absolute value of the integer 
} 

type Rat struct { 
    // To make zero values for Rat work w/o initialization, 
    // a zero value of b (len(b) == 0) acts like b == 1. 
    // a.neg determines the sign of the Rat, b.neg is ignored. 
    a, b Int 
} 

कोई स्पष्ट सीमा नहीं है। सीमा आपकी याददाश्त होगी, सैद्धांतिक रूप से, अधिकतम सरणी आकार (2^31 या 2^63, आपके प्लेटफ़ॉर्म के आधार पर)।


आप व्यावहारिक चिंता है, तो आप http://golang.org/src/pkg/math/big/nat_test.go में किए गए परीक्षणों से रुचि हो सकती है, उदाहरण के लिए एक जहाँ 10^100000 बेंचमार्क है।

और आप आसानी से इस कार्यक्रम के इस प्रकार चला सकते हैं:

package main 

import (
    "fmt" 
    "math/big" 
) 

func main() { 
    verybig := big.NewInt(1) 
    ten := big.NewInt(10) 
    for i:=0; i<100000; i++ { 
     verybig.Mul(verybig, ten) 
    } 
    fmt.Println(verybig) 
} 

समस्या अधिकतम आकार नहीं होगा (यदि आप इसे, जाओ खेल का मैदान के लिए काफी तेजी से चलाने के लिए use a smaller exponent than 100000 चाहते हैं) लेकिन उपयोग की गई स्मृति और समय इस तरह के गणना लेते हैं।

+1

'गणित/बड़े' का उपयोग करते समय आपको अनावश्यक 'big.Int' आवंटन (विशेष रूप से यदि वे ढेर से बचते हैं) से बचने और टालना चाहिए। ऊपर 'लूप' को लूप बॉडी बनाने से उपरोक्त को तेज और सरल बनाया जा सकता है: 'verybig.Mul (verybig, ten) '। –

+0

धन्यवाद @ डेवसी। आपके सुझाव लागू किया। –

संबंधित मुद्दे