/*
* Copyright (c) 2009, ERICSSON AB All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice,
* this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
* * Neither the name of the ERICSSON AB nor the names of its
* contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "feldspar.h"
int pow_fun_signed_int( int a, int b)
{
int out = 1;
int i;
for(i=0; i<b; i++) out *= a;
return out;
}
int pow_fun_unsigned_int( unsigned int a, unsigned int b )
{
int out = 1;
int i;
for(i=0; i<b; i++) out *= a;
return out;
}
int abs_fun_signed_int( int a )
{
if (a < 0) return a*(-1);
return a;
}
int abs_fun_unsigned_int( unsigned int a )
{
if (a < 0) return a*(-1);
return a;
}
long abs_fun_signed_long( long a )
{
if (a < 0) return a*(-1);
return a;
}
long abs_fun_unsigned_long( unsigned long a )
{
if (a < 0) return a*(-1);
return a;
}
double abs_fun_double( double a )
{
if (a < 0) return a*(-1);
return a;
}
int signum_fun_signed_int( int a )
{
if (a < 0) return -1;
if (a > 0) return 1;
return 0;
}
int signum_fun_unsigned_int( unsigned int a )
{
if (a < 0) return -1;
if (a > 0) return 1;
return 0;
}
long signum_fun_signed_long( long a )
{
if (a < 0) return -1;
if (a > 0) return 1;
return 0;
}
long signum_fun_unsigned_long( unsigned long a )
{
if (a < 0) return -1;
if (a > 0) return 1;
return 0;
}
double signum_fun_double( double a )
{
if (a < 0) return -1;
if (a > 0) return 1;
return 0;
}
void copy_arrayOf_signed_int( int* a, int a1, int* b)
{
int i;
for( i=0; i<a1; ++i )
b[i] = a[i];
}
void copy_arrayOf_unsigned_int( unsigned int* a, int a1, unsigned int* b )
{
int i;
for( i=0; i<a1; ++i )
b[i] = a[i];
}
void copy_arrayOf_signed_long( long* a, int a1, long* b )
{
int i;
for( i=0; i<a1; ++i )
b[i] = a[i];
}
void copy_arrayOf_unsigned_long( unsigned long* a, int a1, unsigned long* b )
{
int i;
for( i=0; i<a1; ++i )
b[i] = a[i];
}
void copy_arrayOf_float( float* a, int a1, float* b )
{
int i;
for( i=0; i<a1; ++i )
b[i] = a[i];
}
void copy_arrayOf_double( double* a, int a1, double* b )
{
int i;
for( i=0; i<a1; ++i )
b[i] = a[i];
}
void copy_arrayOf_arrayOf_signed_int( int** a, int a1, int a2, int** b )
{
int i, j;
for (i = 0; i < a2; i++)
for (j = 0; j < a1; j++)
*(b + j * a2 + i) = *(a + j * a2 + i);
}
void copy_arrayOf_arrayOf_unsigned_int( unsigned int** a, int a1, int a2, unsigned int** b )
{
int i, j;
for (i = 0; i < a2; i++)
for (j = 0; j < a1; j++)
*(b + j * a2 + i) = *(a + j * a2 + i);
}
void copy_arrayOf_arrayOf_signed_long( long** a, int a1, int a2, long** b )
{
int i, j;
for (i = 0; i < a2; i++)
for (j = 0; j < a1; j++)
*(b + j * a2 + i) = *(a + j * a2 + i);
}
void copy_arrayOf_arrayOf_unsigned_long( unsigned long** a, int a1, int a2, unsigned long** b )
{
int i, j;
for (i = 0; i < a2; i++)
for (j = 0; j < a1; j++)
*(b + j * a2 + i) = *(a + j * a2 + i);
}
void copy_arrayOf_arrayOf_float( float** a, int a1, int a2, float** b )
{
int i, j;
for (i = 0; i < a2; i++)
for (j = 0; j < a1; j++)
*(b + j * a2 + i) = *(a + j * a2 + i);
}
void copy_arrayOf_arrayOf_double( double** a, int a1, int a2, double** b )
{
int i, j;
for (i = 0; i < a2; i++)
for (j = 0; j < a1; j++)
*(b + j * a2 + i) = *(a + j * a2 + i);
}