summaryrefslogtreecommitdiff
path: root/common/quicktime_win32/vBigNum.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/quicktime_win32/vBigNum.h')
-rw-r--r--common/quicktime_win32/vBigNum.h1407
1 files changed, 1407 insertions, 0 deletions
diff --git a/common/quicktime_win32/vBigNum.h b/common/quicktime_win32/vBigNum.h
new file mode 100644
index 0000000..0a526f4
--- /dev/null
+++ b/common/quicktime_win32/vBigNum.h
@@ -0,0 +1,1407 @@
+/*
+ File: vBigNum.h
+
+ Contains: Algebraic and logical operations on large operands.
+
+ Version: QuickTime 7.3
+
+ Copyright: (c) 2007 (c) 1999-2001 by Apple Computer, Inc., all rights reserved.
+
+ Bugs?: For bug reports, consult the following page on
+ the World Wide Web:
+
+ http://developer.apple.com/bugreporter/
+
+*/
+#ifndef __VBIGNUM__
+#define __VBIGNUM__
+
+#ifndef __CONDITIONALMACROS__
+#include <ConditionalMacros.h>
+#endif
+
+
+
+#if PRAGMA_ONCE
+#pragma once
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if PRAGMA_IMPORT
+#pragma import on
+#endif
+
+#if PRAGMA_STRUCT_ALIGN
+ #pragma options align=mac68k
+#elif PRAGMA_STRUCT_PACKPUSH
+ #pragma pack(push, 2)
+#elif PRAGMA_STRUCT_PACK
+ #pragma pack(2)
+#endif
+
+#ifdef __VEC__
+/************************************************************************************
+* *
+* This library provides a set of subroutines for basic algebraic and some logical *
+* operations performed on operands with the following sizes: *
+* *
+* 128 - bits *
+* 256 - bits *
+* 512 - bits *
+* 1024 - bits *
+* *
+* Following basic and algebraic operations are included: *
+* *
+* Addition *
+* Subtraction *
+* Multiplication *
+* Division *
+* Mod *
+* Shift Right *
+* Shift Right Arithmatic *
+* Shift Left *
+* Rotate Right *
+* Rotate Left *
+* *
+* *
+************************************************************************************/
+/***********************************************************************************
+* Following abbreviations are used in the names of functions in this library: *
+* *
+* v Vector *
+* U Unsigned *
+* S Signed *
+* 128 128 - bit *
+* 256 256 - bit *
+* 512 512 - bit *
+* 1024 1024 - bit *
+* Add Addition, modular arithmetic *
+* AddS Addition with Saturation *
+* Sub Subtraction, modular arithmetic *
+* SubS Subtraction with Saturation *
+* Multiply Multiplication *
+* Divide Division *
+* Half Half (multiplication, width of result is the same as width of *
+* operands) *
+* Full Full (multiplication, width of result is twice width of each *
+* operand) *
+* *
+* Mod Modular operation *
+* Neg Negate a number *
+* A Algebraic *
+* LL Logical Left *
+* LR Logical Right *
+* Shift Shift *
+* Rotate Rotation *
+* *
+***********************************************************************************/
+/************************************************************************************
+* *
+* A few explanations for the choices made in naming, passing arguments, and *
+* various functions. *
+* *
+* 1) Names for the functions are made compatible with the names used in the *
+* vBasicOps library. The format of the names are the same and include a *
+* designation to show a vector operation, then a symbol for the type of data *
+* (signed or unsigned), followed by the size of operands, then the operation *
+* performed. *
+* *
+* 2) Note that the logical and arithmetic shiftLeft operation are the same. *
+* *
+* 3) Rotate operation is performed on unsigned and signed numbers. *
+* *
+************************************************************************************/
+
+/************************************************************************************
+* *
+* Following are a set of structures for vector data types and scalar data types *
+* *
+************************************************************************************/
+
+union vU128 {
+ vector unsigned int v;
+ struct {
+ unsigned long MSW;
+ unsigned long d2;
+ unsigned long d3;
+ unsigned long LSW;
+ } s;
+};
+typedef union vU128 vU128;
+union vS128 {
+ vector unsigned int v;
+ struct {
+ signed long MSW;
+ unsigned long d2;
+ unsigned long d3;
+ unsigned long LSW;
+ } s;
+};
+typedef union vS128 vS128;
+union vU256 {
+ vector unsigned int v[2];
+ struct {
+ unsigned long MSW;
+ unsigned long d2;
+ unsigned long d3;
+ unsigned long d4;
+ unsigned long d5;
+ unsigned long d6;
+ unsigned long d7;
+ unsigned long LSW;
+ } s;
+};
+typedef union vU256 vU256;
+union vS256 {
+ vector unsigned int v[2];
+ struct {
+ signed long MSW;
+ unsigned long d2;
+ unsigned long d3;
+ unsigned long d4;
+ unsigned long d5;
+ unsigned long d6;
+ unsigned long d7;
+ unsigned long LSW;
+ } s;
+};
+typedef union vS256 vS256;
+union vU512 {
+ vector unsigned int v[4];
+ struct {
+ unsigned long MSB;
+ unsigned long d2;
+ unsigned long d3;
+ unsigned long d4;
+ unsigned long d5;
+ unsigned long d6;
+ unsigned long d7;
+ unsigned long d8;
+ unsigned long d9;
+ unsigned long d10;
+ unsigned long d11;
+ unsigned long d12;
+ unsigned long d13;
+ unsigned long d14;
+ unsigned long d15;
+ unsigned long LSB;
+ } s;
+};
+typedef union vU512 vU512;
+union vS512 {
+ vector unsigned int v[4];
+ struct {
+ signed long MSW;
+ unsigned long d2;
+ unsigned long d3;
+ unsigned long d4;
+ unsigned long d5;
+ unsigned long d6;
+ unsigned long d7;
+ unsigned long d8;
+ unsigned long d9;
+ unsigned long d10;
+ unsigned long d11;
+ unsigned long d12;
+ unsigned long d13;
+ unsigned long d14;
+ unsigned long d15;
+ unsigned long LSW;
+ } s;
+};
+typedef union vS512 vS512;
+union vU1024 {
+ vector unsigned int v[8];
+ struct {
+ unsigned long MSW;
+ unsigned long d2;
+ unsigned long d3;
+ unsigned long d4;
+ unsigned long d5;
+ unsigned long d6;
+ unsigned long d7;
+ unsigned long d8;
+ unsigned long d9;
+ unsigned long d10;
+ unsigned long d11;
+ unsigned long d12;
+ unsigned long d13;
+ unsigned long d14;
+ unsigned long d15;
+ unsigned long d16;
+ unsigned long d17;
+ unsigned long d18;
+ unsigned long d19;
+ unsigned long d20;
+ unsigned long d21;
+ unsigned long d22;
+ unsigned long d23;
+ unsigned long d24;
+ unsigned long d25;
+ unsigned long d26;
+ unsigned long d27;
+ unsigned long d28;
+ unsigned long d29;
+ unsigned long d30;
+ unsigned long d31;
+ unsigned long LSW;
+ } s;
+};
+typedef union vU1024 vU1024;
+union vS1024 {
+ vector unsigned int v[8];
+ struct {
+ signed long MSW;
+ unsigned long d2;
+ unsigned long d3;
+ unsigned long d4;
+ unsigned long d5;
+ unsigned long d6;
+ unsigned long d7;
+ unsigned long d8;
+ unsigned long d9;
+ unsigned long d10;
+ unsigned long d11;
+ unsigned long d12;
+ unsigned long d13;
+ unsigned long d14;
+ unsigned long d15;
+ unsigned long d16;
+ unsigned long d17;
+ unsigned long d18;
+ unsigned long d19;
+ unsigned long d20;
+ unsigned long d21;
+ unsigned long d22;
+ unsigned long d23;
+ unsigned long d24;
+ unsigned long d25;
+ unsigned long d26;
+ unsigned long d27;
+ unsigned long d28;
+ unsigned long d29;
+ unsigned long d30;
+ unsigned long d31;
+ unsigned long LSW;
+ } s;
+};
+typedef union vS1024 vS1024;
+
+/************************************************************************************
+* *
+* Division operations *
+* *
+************************************************************************************/
+
+
+/*
+ * vU256Divide()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU256Divide(
+ const vU256 * numerator,
+ const vU256 * divisor,
+ vU256 * result,
+ vU256 * remainder);
+
+
+/*
+ * vS256Divide()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS256Divide(
+ const vS256 * numerator,
+ const vS256 * divisor,
+ vS256 * result,
+ vS256 * remainder);
+
+
+/*
+ * vU512Divide()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU512Divide(
+ const vU512 * numerator,
+ const vU512 * divisor,
+ vU512 * result,
+ vU512 * remainder);
+
+
+/*
+ * vS512Divide()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS512Divide(
+ const vS512 * numerator,
+ const vS512 * divisor,
+ vS512 * result,
+ vS512 * remainder);
+
+
+/*
+ * vU1024Divide()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU1024Divide(
+ const vU1024 * numerator,
+ const vU1024 * divisor,
+ vU1024 * result,
+ vU1024 * remainder);
+
+
+/*
+ * vS1024Divide()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS1024Divide(
+ const vS1024 * numerator,
+ const vS1024 * divisor,
+ vS1024 * result,
+ vS1024 * remainder);
+
+
+
+/************************************************************************************
+* *
+* Multiply operations *
+* *
+************************************************************************************/
+
+/*
+ * vU128FullMultiply()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU128FullMultiply(
+ const vU128 * a,
+ const vU128 * b,
+ vU256 * result);
+
+
+/*
+ * vS128FullMultiply()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS128FullMultiply(
+ const vS128 * a,
+ const vS128 * b,
+ vS256 * result);
+
+
+/*
+ * vU256FullMultiply()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU256FullMultiply(
+ const vU256 * a,
+ const vU256 * b,
+ vU512 * result);
+
+
+/*
+ * vS256FullMultiply()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS256FullMultiply(
+ const vS256 * a,
+ const vS256 * b,
+ vS512 * result);
+
+
+/*
+ * vU512FullMultiply()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU512FullMultiply(
+ const vU512 * a,
+ const vU512 * b,
+ vU1024 * result);
+
+
+/*
+ * vS512FullMultiply()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS512FullMultiply(
+ const vS512 * a,
+ const vS512 * b,
+ vS1024 * result);
+
+
+/*
+ * vU256HalfMultiply()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU256HalfMultiply(
+ const vU256 * a,
+ const vU256 * b,
+ vU256 * result);
+
+
+/*
+ * vS256HalfMultiply()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS256HalfMultiply(
+ const vS256 * a,
+ const vS256 * b,
+ vS256 * result);
+
+
+/*
+ * vU512HalfMultiply()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU512HalfMultiply(
+ const vU512 * a,
+ const vU512 * b,
+ vU512 * result);
+
+
+/*
+ * vS512HalfMultiply()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS512HalfMultiply(
+ const vS512 * a,
+ const vS512 * b,
+ vS512 * result);
+
+
+/*
+ * vU1024HalfMultiply()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU1024HalfMultiply(
+ const vU1024 * a,
+ const vU1024 * b,
+ vU1024 * result);
+
+
+/*
+ * vS1024HalfMultiply()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS1024HalfMultiply(
+ const vS1024 * a,
+ const vS1024 * b,
+ vS1024 * result);
+
+
+
+/************************************************************************************
+* *
+* Subtraction operations *
+* *
+************************************************************************************/
+
+/*
+ * vU256Sub()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU256Sub(
+ const vU256 * a,
+ const vU256 * b,
+ vU256 * result);
+
+
+/*
+ * vS256Sub()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS256Sub(
+ const vS256 * a,
+ const vS256 * b,
+ vS256 * result);
+
+
+/*
+ * vU256SubS()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU256SubS(
+ const vU256 * a,
+ const vU256 * b,
+ vU256 * result);
+
+
+/*
+ * vS256SubS()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS256SubS(
+ const vS256 * a,
+ const vS256 * b,
+ vS256 * result);
+
+
+/*
+ * vU512Sub()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU512Sub(
+ const vU512 * a,
+ const vU512 * b,
+ vU512 * result);
+
+
+/*
+ * vS512Sub()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS512Sub(
+ const vS512 * a,
+ const vS512 * b,
+ vS512 * result);
+
+
+/*
+ * vU512SubS()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU512SubS(
+ const vU512 * a,
+ const vU512 * b,
+ vU512 * result);
+
+
+/*
+ * vS512SubS()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS512SubS(
+ const vS512 * a,
+ const vS512 * b,
+ vS512 * result);
+
+
+/*
+ * vU1024Sub()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU1024Sub(
+ const vU1024 * a,
+ const vU1024 * b,
+ vU1024 * result);
+
+
+/*
+ * vS1024Sub()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS1024Sub(
+ const vS1024 * a,
+ const vS1024 * b,
+ vS1024 * result);
+
+
+/*
+ * vU1024SubS()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU1024SubS(
+ const vU1024 * a,
+ const vU1024 * b,
+ vU1024 * result);
+
+
+/*
+ * vS1024SubS()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS1024SubS(
+ const vS1024 * a,
+ const vS1024 * b,
+ vS1024 * result);
+
+
+
+/************************************************************************************
+* *
+* Negate operations *
+* *
+************************************************************************************/
+
+/*
+ * vU256Neg()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU256Neg(
+ const vU256 * a,
+ vU256 * result);
+
+
+/*
+ * vS256Neg()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS256Neg(
+ const vS256 * a,
+ vS256 * result);
+
+
+/*
+ * vU512Neg()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU512Neg(
+ const vU512 * a,
+ vU512 * result);
+
+
+/*
+ * vS512Neg()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS512Neg(
+ const vS512 * a,
+ vS512 * result);
+
+
+/*
+ * vU1024Neg()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU1024Neg(
+ const vU1024 * a,
+ vU1024 * result);
+
+
+/*
+ * vS1024Neg()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS1024Neg(
+ const vS1024 * a,
+ vS1024 * result);
+
+
+
+/************************************************************************************
+* *
+* Addition operations *
+* *
+************************************************************************************/
+
+/*
+ * vU256Add()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU256Add(
+ const vU256 * a,
+ const vU256 * b,
+ vU256 * result);
+
+
+/*
+ * vS256Add()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS256Add(
+ const vS256 * a,
+ const vS256 * b,
+ vS256 * result);
+
+
+/*
+ * vU256AddS()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU256AddS(
+ const vU256 * a,
+ const vU256 * b,
+ vU256 * result);
+
+
+/*
+ * vS256AddS()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS256AddS(
+ const vS256 * a,
+ const vS256 * b,
+ vS256 * result);
+
+
+/*
+ * vU512Add()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU512Add(
+ const vU512 * a,
+ const vU512 * b,
+ vU512 * result);
+
+
+/*
+ * vS512Add()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS512Add(
+ const vS512 * a,
+ const vS512 * b,
+ vS512 * result);
+
+
+/*
+ * vU512AddS()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU512AddS(
+ const vU512 * a,
+ const vU512 * b,
+ vU512 * result);
+
+
+/*
+ * vS512AddS()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS512AddS(
+ const vS512 * a,
+ const vS512 * b,
+ vS512 * result);
+
+
+/*
+ * vU1024Add()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU1024Add(
+ const vU1024 * a,
+ const vU1024 * b,
+ vU1024 * result);
+
+
+/*
+ * vS1024Add()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS1024Add(
+ const vS1024 * a,
+ const vS1024 * b,
+ vS1024 * result);
+
+
+/*
+ * vU1024AddS()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU1024AddS(
+ const vU1024 * a,
+ const vU1024 * b,
+ vU1024 * result);
+
+
+/*
+ * vS1024AddS()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS1024AddS(
+ const vS1024 * a,
+ const vS1024 * b,
+ vS1024 * result);
+
+
+
+/************************************************************************************
+* *
+* Mod operations *
+* *
+************************************************************************************/
+
+/*
+ * vU256Mod()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU256Mod(
+ const vU256 * numerator,
+ const vU256 * divisor,
+ vU256 * remainder);
+
+
+/*
+ * vS256Mod()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS256Mod(
+ const vS256 * numerator,
+ const vS256 * divisor,
+ vS256 * remainder);
+
+
+/*
+ * vU512Mod()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU512Mod(
+ const vU512 * numerator,
+ const vU512 * divisor,
+ vU512 * remainder);
+
+
+/*
+ * vS512Mod()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS512Mod(
+ const vS512 * numerator,
+ const vS512 * divisor,
+ vS512 * remainder);
+
+
+/*
+ * vU1024Mod()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vU1024Mod(
+ const vU1024 * numerator,
+ const vU1024 * divisor,
+ vU1024 * remainder);
+
+
+/*
+ * vS1024Mod()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vS1024Mod(
+ const vS1024 * numerator,
+ const vS1024 * divisor,
+ vS1024 * remainder);
+
+
+
+/************************************************************************************
+* *
+* Shift operations *
+* *
+************************************************************************************/
+
+/*
+ * vLL256Shift()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vLL256Shift(
+ const vU256 * a,
+ unsigned long shiftAmount,
+ vU256 * result);
+
+
+/*
+ * vLL512Shift()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vLL512Shift(
+ const vU512 * a,
+ unsigned long shiftAmount,
+ vU512 * result);
+
+
+/*
+ * vLL1024Shift()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vLL1024Shift(
+ const vU1024 * a,
+ unsigned long shiftAmount,
+ vU1024 * result);
+
+
+/*
+ * vLR256Shift()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vLR256Shift(
+ const vU256 * a,
+ unsigned long shiftAmount,
+ vU256 * result);
+
+
+/*
+ * vLR512Shift()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vLR512Shift(
+ const vU512 * a,
+ unsigned long shiftAmount,
+ vU512 * result);
+
+
+/*
+ * vLR1024Shift()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vLR1024Shift(
+ const vU1024 * a,
+ unsigned long shiftAmount,
+ vU1024 * result);
+
+
+/*
+ * vA256Shift()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vA256Shift(
+ const vS256 * a,
+ unsigned long shiftAmount,
+ vS256 * result);
+
+
+/*
+ * vA512Shift()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vA512Shift(
+ const vS512 * a,
+ unsigned long shiftAmount,
+ vS512 * result);
+
+
+/*
+ * vA1024Shift()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vA1024Shift(
+ const vS1024 * a,
+ unsigned long shiftAmount,
+ vS1024 * result);
+
+
+
+/************************************************************************************
+* *
+* Rotate operations *
+* *
+************************************************************************************/
+
+/*
+ * vL256Rotate()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vL256Rotate(
+ const vU256 * a,
+ unsigned long rotateAmount,
+ vU256 * result);
+
+
+/*
+ * vL512Rotate()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vL512Rotate(
+ const vU512 * a,
+ unsigned long rotateAmount,
+ vU512 * result);
+
+
+/*
+ * vL1024Rotate()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vL1024Rotate(
+ const vU1024 * a,
+ unsigned long rotateAmount,
+ vU1024 * result);
+
+
+/*
+ * vR256Rotate()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vR256Rotate(
+ const vU256 * a,
+ unsigned long rotateAmount,
+ vU256 * result);
+
+
+/*
+ * vR512Rotate()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vR512Rotate(
+ const vU512 * a,
+ unsigned long rotateAmount,
+ vU512 * result);
+
+
+/*
+ * vR1024Rotate()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vR1024Rotate(
+ const vU1024 * a,
+ unsigned long rotateAmount,
+ vU1024 * result);
+
+
+
+#endif /* defined(__VEC__) */
+
+
+#if PRAGMA_STRUCT_ALIGN
+ #pragma options align=reset
+#elif PRAGMA_STRUCT_PACKPUSH
+ #pragma pack(pop)
+#elif PRAGMA_STRUCT_PACK
+ #pragma pack()
+#endif
+
+#ifdef PRAGMA_IMPORT_OFF
+#pragma import off
+#elif PRAGMA_IMPORT
+#pragma import reset
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __VBIGNUM__ */
+