github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/math/big/rat.go (about)

     1  // Copyright 2010 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  // This file implements multi-precision rational numbers.
     6  
     7  package big
     8  
     9  // Ratは、任意の精度の商a/bを表します。
    10  // Ratのゼロ値は値0を表します。
    11  //
    12  // 操作は常にポインタ引数(*Rat)を取る
    13  // 代わりにRat値、そして各ユニークなRat値は
    14  // 自身のユニークな*Ratポインタが必要です。Rat値を「コピー」するには、
    15  // 既存の(または新しく割り当てられた)Ratを
    16  // [Rat.Set] メソッドを使用して新しい値に設定する必要があります。Ratsの浅いコピーは
    17  // サポートされておらず、エラーを引き起こす可能性があります。
    18  type Rat struct {
    19  	// To make zero values for Rat work w/o initialization,
    20  	// a zero value of b (len(b) == 0) acts like b == 1. At
    21  	// the earliest opportunity (when an assignment to the Rat
    22  	// is made), such uninitialized denominators are set to 1.
    23  	// a.neg determines the sign of the Rat, b.neg is ignored.
    24  	a, b Int
    25  }
    26  
    27  // NewRatは、分子aと分母bを持つ新しい [Rat] を作成します。
    28  func NewRat(a, b int64) *Rat
    29  
    30  // SetFloat64は、zを正確にfに設定し、zを返します。
    31  // もしfが有限でない場合、SetFloatはnilを返します。
    32  func (z *Rat) SetFloat64(f float64) *Rat
    33  
    34  // Float32は、xに最も近いfloat32値と、
    35  // fがxを正確に表現しているかどうかを示すbool値を返します。
    36  // もしxの絶対値がfloat32で表現できる範囲を超えている場合、
    37  // fは無限大となり、exactはfalseとなります。
    38  // fの符号は、fが0であっても、常にxの符号と一致します。
    39  func (x *Rat) Float32() (f float32, exact bool)
    40  
    41  // Float64は、xに最も近いfloat64値と、
    42  // fがxを正確に表現しているかどうかを示すbool値を返します。
    43  // もしxの絶対値がfloat64で表現できる範囲を超えている場合、
    44  // fは無限大となり、exactはfalseとなります。
    45  // fの符号は、fが0であっても、常にxの符号と一致します。
    46  func (x *Rat) Float64() (f float64, exact bool)
    47  
    48  // SetFracは、zをa/bに設定し、zを返します。
    49  // もしb == 0の場合、SetFracはパニックを引き起こします。
    50  func (z *Rat) SetFrac(a, b *Int) *Rat
    51  
    52  // SetFrac64は、zをa/bに設定し、zを返します。
    53  // もしb == 0の場合、SetFrac64はパニックを引き起こします。
    54  func (z *Rat) SetFrac64(a, b int64) *Rat
    55  
    56  // SetIntは、zをxに設定します(xのコピーを作成します)そしてzを返します。
    57  func (z *Rat) SetInt(x *Int) *Rat
    58  
    59  // SetInt64は、zをxに設定し、zを返します。
    60  func (z *Rat) SetInt64(x int64) *Rat
    61  
    62  // SetUint64は、zをxに設定し、zを返します。
    63  func (z *Rat) SetUint64(x uint64) *Rat
    64  
    65  // Setは、zをxに設定します(xのコピーを作成します)そしてzを返します。
    66  func (z *Rat) Set(x *Rat) *Rat
    67  
    68  // Absは、zを|x|に設定します(xの絶対値)そしてzを返します。
    69  func (z *Rat) Abs(x *Rat) *Rat
    70  
    71  // Negは、zを-xに設定し、zを返します。
    72  func (z *Rat) Neg(x *Rat) *Rat
    73  
    74  // Invは、zを1/xに設定し、zを返します。
    75  // もしx == 0の場合、Invはパニックを引き起こします。
    76  func (z *Rat) Inv(x *Rat) *Rat
    77  
    78  // Signは以下を返します:
    79  //
    80  //	-1 if x <  0
    81  //	 0 if x == 0
    82  //	+1 if x >  0
    83  func (x *Rat) Sign() int
    84  
    85  // IsIntは、xの分母が1であるかどうかを報告します。
    86  func (x *Rat) IsInt() bool
    87  
    88  // Numはxの分子を返します。これは0以下になる可能性があります。
    89  // 結果はxの分子への参照であり、xに新しい値が割り当てられると変更される可能性があります。逆も同様です。
    90  // 分子の符号はxの符号に対応します。
    91  func (x *Rat) Num() *Int
    92  
    93  // Denomはxの分母を返します。これは常に> 0です。
    94  // 結果はxの分母への参照であり、
    95  // xが初期化されていない(ゼロ値の)[Rat] の場合、
    96  // 結果は値1の新しい [Int] になります。(xを初期化するには、
    97  // xを設定する任意の操作が適用できます、x.Set(x)を含む。)
    98  // 結果がxの分母への参照である場合、
    99  // 新しい値がxに割り当てられると変更される可能性があります。逆も同様です。
   100  func (x *Rat) Denom() *Int
   101  
   102  // Cmpはxとyを比較し、以下を返します:
   103  //
   104  //	-1 if x <  y
   105  //	 0 if x == y
   106  //	+1 if x >  y
   107  func (x *Rat) Cmp(y *Rat) int
   108  
   109  // Addはzをx+yの和に設定し、zを返します。
   110  func (z *Rat) Add(x, y *Rat) *Rat
   111  
   112  // Subはzをx-yの差に設定し、zを返します。
   113  func (z *Rat) Sub(x, y *Rat) *Rat
   114  
   115  // Mulはzをx*yの積に設定し、zを返します。
   116  func (z *Rat) Mul(x, y *Rat) *Rat
   117  
   118  // Quoはzをx/yの商に設定し、zを返します。
   119  // もしy == 0の場合、Quoはパニックを引き起こします。
   120  func (z *Rat) Quo(x, y *Rat) *Rat