packages feed

feldspar-compiler-0.1: Feldspar/C/feldspar.c

/*
 * 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);
}