Revision 5f23fb0b6e1d50d996ac54daaa7e637e5d8decaf authored by Software Heritage on 05 May 2020, 00:00:00 UTC, committed by Software Heritage on 27 June 2020, 00:00:00 UTC
0 parent
Raw File
utilities.c
/*
* utilities.c
*
* Copyright (C) 2019, Tristan Dagobert, CMLA, École Normale Supérieure Paris-Saclay.
*
* This software is a computer program.
* It is a part of a code which estimates, given a satellite time series
* the visibility of each image. Given a gray level time series, it provides a
* Boolean times series indicating the visibility (mainly the opaque clouds,
* haze and shadow).
*
*
* This software is governed by the CeCILL-C license under French law and
* abiding by the rules of distribution of free software.  You can  use,
* modify and/ or redistribute the software under the terms of the CeCILL-C
* license as circulated by CEA, CNRS and INRIA at the following URL
* "http://www.cecill.info".
*
* As a counterpart to the access to the source code and  rights to copy,
* modify and redistribute granted by the license, users are provided only
* with a limited warranty  and the software's author,  the holder of the
* economic rights,  and the successive licensors  have only  limited
* liability.
*
* In this respect, the user's attention is drawn to the risks associated
* with loading,  using,  modifying and/or developing or reproducing the
* software by the user in light of its specific status of free software,
* that may mean  that it is complicated to manipulate,  and  that  also
* therefore means  that it is reserved for developers  and  experienced
* professionals having in-depth computer knowledge. Users are therefore
* encouraged to load and test the software's suitability as regards their
* requirements in conditions enabling the security of their systems and/or
* data to be ensured and,  more generally, to use and operate it in the
* same conditions as regards security.
*
* The fact that you are presently reading this means that you have had
* knowledge of the CeCILL-C license and that you accept its terms.
*
*/

#include "iio.h"

#include "utilities.h"

#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include <float.h>
#include <assert.h>
#include <errno.h>
/*===========================================================================*/
int comparaison(const void*p1,const void*p2)
{
    float*a=(float*)p1;
    float*b=(float*)p2;

    if(*a<*b)
        return (-1);
    if(*a==*b)
        return (0);
    if(*a>*b)
        return (+1);

    return (0);
}

/*===========================================================================*/
float **
alloc_series_f(int nb_ims, int npix)
{
    int n;
    float ** ims;

    ims = malloc(nb_ims * sizeof(float *));
    for(n=0; n<nb_ims; n++) ims[n] = malloc(npix * sizeof(float));

    return ims;
}
/*===========================================================================*/
void
free_series_f(void * ims, int nb_ims, int nb_patches[1])
{
    if (ims == NULL) return;

    float *** mlist, ** list;
    int i, n;

    if (nb_patches == NULL)
    {
        list = (float **) ims;
        for (i = 0; i < nb_ims; i++) free(list[i]);
        free(list);
    }
    else
    {
        mlist = (float ***) ims;
        for (n = 0; n < nb_patches[0]; n++)
        {
            for (i = 0; i < nb_ims; i++) free(mlist[n][i]);
            free(mlist[n]);
        }
        free(mlist);
    }

    return;
}
/*============================================================================*/
void
memcpy_series(float ** dests, float ** srcs, int nb_ims, int npix)
{
    int n;
    for(n = 0; n < nb_ims; n++)
    {
        memcpy(dests[n], srcs[n], npix * sizeof(float));
    }
    return;
}
/*============================================================================*/
back to top