算術演算子及び論理演算子

この節を先頭とする三つの節では、ページ要素及びそれに関連するオブジェクトの操作又は作画に直接関係しない演算子群について規定する。 これには、次のものが含まれる。

これらの演算子及びその意味に関する規定は、演算子を解釈した結果として内容例外を発生させうる条件についての規定を含む。 . ]]> 内容例外及び例外処理については、で定義する。 これら演算子固有の例外に加えて、ほとんどどの演算子の解釈辞にも発生しうる共通的な例外がある。 . ]]> これらの共通例外及びその意味については、で述べる。 SPDLは、得られるべき効果だけを規定し、その結果を得るために必要な機構は規定しない、ということを強調しておく。 本節の定義では、説明の便宜上、特定のオペランドスタック操作、及び特定の順序でのオブジェクト操作を要求しているが、実装においては、与えられた演算子に対して要求される効果を異なった方法で達成してもかまわない。

次に述べる算術演算子群は、IEEE 754における2進の浮動小数点算術規 則に従ってその演算を実行する。この算術規則は、IEEE 754 で規定さ れているトラップのようなオプションにおいては無指定時値を使用する。

この節における規定では、2個以上の数型のオペランドをもつ演算子は、その演算子の範囲内で、整数及び実数のどちらも受け入れるものとする。 1個以上のオペランドが整数で、あるオペランドが実数であるときは、演算を実行するために、整数のオペランドは、実数へ変換される。

AbsoluteValue演算子は、次に示す1個のオペランドをとる。
  • <

    そして、次に示す1個の結果を返す。

  • <

    ここで、 オペランド Add演算子は、次に示す2個のオペランドをとる。

  • <<

    そして、次に示す1個の結果を返す。

  • <

    ここで、z = x + yとする。 オペランドが共に整数型の値である場合、 ArcTangent演算子は、次に示す2個のオペランドをとる。

  • <<

    そして、次に示す1個の結果を返す。

  • <

    ここで、y / xであり、0度から360度の範囲内にある角度とする。 . ]]> オペランドの符号によって、結果の象限は、のとおり定まる。 xy結果 第1象限 第4象限 第2象限 第3象限 0 0.0 0 180.0 0 90.0 0 270.0 0 0 RaiseError shall be invoked with UndefinedResult as its operand. ]]> RaiseError を実行する。

    And演算子は、次に示す2個のオペランドをとる。
  • <<

    そして、次に示す1個の結果を返す。

  • <

    ここで、両方のオペランドは、同一の型でなければならない。 オペランドが共に論理型の場合、 オペランドが共に整数型の場合、 Ceiling演算子は、次に示す1個のオペランドをとる。

  • <

    そして、次に示す1個の結果を返す。

  • <

    ここで、 オペランドが整数型の場合、 オペランドが実数型の場合、 Cosine演算子は、次に示す1個のオペランドをとる。

  • <

    そして、次に示す1個の結果を返す。

  • <

    ここで、 Divide演算子は、次に示す2個のオペランドをとる。

  • <<

    そして、次に示す1個の結果を返す。

  • <

    ここで、RaiseError shall be invoked with UndefinedResult as its operand. ]]> RaiseErrorを実行する。

    Equal演算子は、次に示す2個のオペランドをとる。
  • <<

    そして、次に示す1個の結果を返す。

  • <

    ここで、 この場合、整数型のオペランドは実数型へ変換され、2個のオペランドは実数型の値として比較される。

    識別子型とオクテット列参照型の値は、比較される。この場合は、識別子型の値に対応するオクテット列と参照されるオクテット列は、単なるオクテットの並びとして比較してもよい。

    値に関連づけられた属性()は、値の等価性の判定には関係しない。

    Exponentiate演算子は、次に示す2個のオペランドをとる。
  • <<

    そして、次に示す1個の結果を返す。

  • <

    ここで、RaiseError shall be invoked with UndefinedResult as its operand. ]]> RaiseErrorを実行する。

    False演算子は、オペランドをとらず、次に示す1個の結果を返す。
  • <false:

    ここで、falseは、論理値の偽とする。

    Floor演算子は、次に示す1個のオペランドをとる。
  • <

    そして、次に示す1個の結果を返す。

  • <

    ここで、 オペランドが整数型の場合は、 オペランドが実数型の場合は、 GreaterOrEqual演算子は、次に示す2個のオペランドをとる。

  • <<

    そして、次に示す1個の結果を返す。

  • <

    Not}. ]]> ここで、LessThan Not}の結果とする。

    GreaterThan

    GreaterThan operator takes two operands, ]]> GreaterThan演算子は、次に示す2個のオペランドをとる。

  • <<

    そして、次に示す1個の結果を返す。

  • <

    y, and z shall be false otherwise. ]]> ここで、x > yの場合は真、その他の場合は偽とする。

    IntegerDivide演算子は、次に示す2個のオペランドをとる。
  • <<

    そして、次に示す1個の結果を返す。

  • <

    Divide Truncate}. ]]> ここで、Divide Truncate}の結果とする。 RaiseError shall be invoked with UndefinedResult as its operand. ]]> RaiseErrorを実行する。

    LessOrEqual演算子は、次に示す2個のオペランドをとる。
  • <<

    そして、次に示す1個の結果を返す。

  • <

    GreaterThan Not}. ]]> ここで、GreaterThan Not}の結果とする。

    LessThan演算子は、次に示す2個のオペランドをとる。
  • <<

    そして、次に示す1個の結果を返す。

  • <

    ここで、x < yの場合は真、その他の場合は偽とする。

    Logarithm演算子は、次に示す1個のオペランドをとる。
  • <

    そして、次に示す1個の結果を返す。

  • <

    ここで、 LogicalShift演算子は、次に示す2個のオペランドをとる。

  • <<

    そして、次に示す1個の結果を返す。

  • <

    ここで、 シフトの結果生じたビットの値は、0とする。

    Multiply演算子は、次に示す2個のオペランドをとる。
  • <<

    そして、次に示す1個の結果を返す。

  • <

    ここで、 オペランドが共に整数型の値である場合、 NaturalLogarithm演算子は、次に示す1個のオペランドをとる。

  • <

    そして、次に示す1個の結果を返す。

  • <

    ここで、 Negate演算子は、次に示す1個のオペランドをとる。

  • <

    そして、次に示す1個の結果を返す。

  • <

    ここで、y = -xとする。 Not演算子は、次に示す1個のオペランドをとる。

  • <

    そして、次に示す1個の結果を返す。

  • <

    オペランドが論理型のとき、 オペランドが整数型のとき、 NotEqual演算子は、次に示す2個のオペランドをとる。

  • <<

    そして、次に示す1個の結果を返す。

  • <

    Not }. ]]> ここで、Equal Not}の結果とする。

    Null演算子はオペランドをとらず、次に示す1個の結果を返す。
  • <

    これは、ヌル型の値とする。

    Or演算子は、次に示す2個のオペランドをとる。
  • <<

    そして、次に示す1個の結果を返す。

  • <

    ここで、両方のオペランドの型は、同一でなければならない。 オペランドが共に論理型の場合、 オペランドが共に整数型の場合、 Rand演算子は、オペランドをとらず、次に示す1個の結果を返す。

  • <

    ここで、返される値は、0以上1以下の疑似乱数とする。

    RandSetState演算子は、次に示す1個のオペランドをとり、結果は返さない。
  • <

    その作用は、乱数発生器の状態を初期化することとする。 Rand operator in the same order on a given implementation. ]]> 与えられた実装上で、ある 異なる実装においては、与えられた この文書、ページ集合ページ又はピクチャ)の先頭において自動的に乱数値に設定される。

    Remainder演算子は、次に示す2個のオペランドをとる。
  • <<

    そして、次に示す1個の結果を返す。

  • <

    ここで、 RaiseError shall be invoked with UndefinedResult as its operand. ]]> RaiseErrorを実行する。

    Remainder} shall be equivalent to {x y x y IntegerDivide Multiply Subtract} ]]> {Remainder}は、{ IntegerDivide Multiply Subtract}と等価とする。

    Round演算子は、次に示す1個のオペランドをとる。
  • <

    そして、次に示す1個の結果を返す。

  • <

    ここで、 Sine演算子は、次に示す1個のオペランドをとる。

  • <

    そして、次に示す1個の結果を返す。

  • <

    ここで、 SquareRoot演算子は、次に示す1個のオペランドをとる。

  • <

    そして、次に示す1個の結果を返す。

  • <

    ここで、 Subtract演算子は、次に示す2個のオペランドをとる。

  • <<

    そして、次に示す1個の結果を返す。

  • <

    ここで、z = x - yとする。 オペランドが共に整数型の値である場合、 True演算子は、オペランドをとらず、次に示す1個の結果を返す。

  • <true:

    trueは、論理値の真とする。

    Truncate演算子は、次に示す1個のオペランドをとる。
  • <

    そして、次に示す1個の結果を返す。

  • <

    オペランドが整数型ならば、 オペランドが実数型ならば、 Xor演算子は、次に示す2個のオペランドをとる。

  • <<

    そして、次に示す1個の結果を返す。

  • <

    ここで、両方のオペランドは、同一の型でなければならない。 オペランドがともに論理型の場合、 オペランドがともに整数型の場合、