Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1407 lines
38 KiB

/*
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__ */