+++ /dev/null
-#include <stdio.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-#include "mtxutl.h"
-
-void MtxuntDouble( double **mtx, int n )
-{
- int i, j;
- for( i=0; i<n; i++ ) for( j=0; j<n; j++ ) mtx[i][j] = 0.0;
- for( i=0; i<n; i++ ) mtx[i][i] = 1.0;
-}
-
-void MtxmltDouble( double **mtx1, double **mtx2, int n )
-{
- int i, j, k;
- double s, *tmp;
-
- tmp = (double *)calloc( n, sizeof( double ) );
- for( i=0; i<n; i++ )
- {
- for( k=0; k<n; k++ ) tmp[k] = mtx1[i][k];
- for( j=0; j<n; j++ )
- {
- s = 0.0;
- for( k=0; k<n; k++ ) s += tmp[k] * mtx2[k][j];
- mtx1[i][j] = s;
- }
- }
- free( tmp );
-}
-
-char *AllocateCharVec( int l1 )
-{
- char *cvec;
-
- cvec = (char *)calloc( l1, sizeof( char ) );
- if( cvec == NULL )
- {
- fprintf( stderr, "Cannot allocate %d character vector.\n", l1 );
- exit( 1 );
- }
- return( cvec );
-}
-
-#if 0
-void ReallocateCharMtx( char **mtx, int l1, int l2 )
-{
- int i;
- char *bk = (char *)malloc( l2+1 ); // hontou ha iranai
- if( bk == NULL )
- {
- fprintf( stderr, "Cannot allocate bk in ReallocateCharMtx\n" );
- exit( 1 );
- }
- for( i=0; i<l1; i++ )
- {
-#if 1
- strcpy( bk, mtx[i] );
- mtx[i] = (char *)realloc( mtx[i], (l2+1) * sizeof( char ) );
- if( mtx[i] == NULL )
- {
- fprintf( stderr, "Cannot reallocate %d x %d character matrix.\n", l1, l2 );
- }
- if( strcmp( bk, mtx[i] ) ) // hontou ha iranai
- {
- fprintf( stderr, "changed!! \n%s\n \nto\n%s\n in realloc..\n", bk, mtx[i] );
- strcpy( mtx[i], bk );
- }
-#else
- strcpy( bk, mtx[i] );
- free( mtx[i] );
- mtx[i] = (char *)calloc( (l2+1), sizeof( char ) );
- strcpy( mtx[i], bk );
-#endif
- }
- free( bk ); // hontou ha iranai
-}
-#else
-void ReallocateCharMtx( char **mtx, int l1, int l2 )
-{
- int i;
- for( i=0; i<l1; i++ )
- {
- mtx[i] = (char *)realloc( mtx[i], (l2+1) * sizeof( char ) );
- if( mtx[i] == NULL )
- {
- fprintf( stderr, "Cannot reallocate %d x %d character matrix.\n", l1, l2 );
- }
- }
-}
-#endif
-
-char **AllocateCharMtx( int l1, int l2 )
-{
- int i;
- char **cmtx;
-
- cmtx = (char **)calloc( l1+1, sizeof( char * ) );
- if( cmtx == NULL )
- {
- fprintf( stderr, "Cannot allocate %d x %d character matrix.\n", l1, l2 );
- exit( 1 );
- }
- if( l2 )
- {
- for( i=0; i<l1; i++ )
- {
- cmtx[i] = AllocateCharVec( l2 );
- }
- }
- cmtx[l1] = NULL;
- return( cmtx );
-}
-
-void FreeCharMtx( char **mtx )
-{
-/*
- char **x;
- x = mtx;
- while( *x != NULL ) free( *x++ );
- free( mtx );
-*/
- int i;
- for( i=0; mtx[i]; i++ )
- {
- free( mtx[i] );
- }
- free( mtx );
-}
-
-float *AllocateFloatVec( int l1 )
-{
- float *vec;
-
- vec = (float *)calloc( (unsigned int)l1, sizeof( float ) );
- if( vec == NULL )
- {
- fprintf( stderr, "Allocation error ( %d fload vec )\n", l1 );
- exit( 1 );
- }
- return( vec );
-}
-
-void FreeFloatVec( float *vec )
-{
- free( (char *)vec );
-}
-
-float **AllocateFloatHalfMtx( int ll1 )
-{
- float **mtx;
- int i;
-
- mtx = (float **)calloc( (unsigned int)ll1+1, sizeof( float * ) );
- if( mtx == NULL )
- {
- fprintf( stderr, "Allocation error ( %d fload halfmtx )\n", ll1 );
- exit( 1 );
- }
- for( i=0; i<ll1; i++ )
- {
- mtx[i] = (float *)calloc( ll1-i, sizeof( float ) );
- if( !mtx[i] )
- {
- fprintf( stderr, "Allocation error( %d floathalfmtx )\n", ll1 );
- exit( 1 );
- }
- }
- mtx[ll1] = NULL;
- return( mtx );
-}
-
-float **AllocateFloatMtx( int ll1, int ll2 )
-{
- float **mtx;
- int i;
-
- mtx = (float **)calloc( (unsigned int)ll1+1, sizeof( float * ) );
- if( mtx == NULL )
- {
- fprintf( stderr, "Allocation error ( %d x %d fload mtx )\n", ll1, ll2 );
- exit( 1 );
- }
- if( ll2 )
- {
- for( i=0; i<ll1; i++ )
- {
- mtx[i] = (float *)calloc( ll2, sizeof( float ) );
- if( !mtx[i] )
- {
- fprintf( stderr, "Allocation error( %d x %d floatmtx )\n", ll1, ll2 );
- exit( 1 );
- }
- }
- }
- mtx[ll1] = NULL;
- return( mtx );
-}
-
-void FreeFloatHalfMtx( float **mtx, int n )
-{
- int i;
-
- for( i=0; i<n; i++ )
- {
- if( mtx[i] ) FreeFloatVec( mtx[i] );
- }
- free( mtx );
-}
-void FreeFloatMtx( float **mtx )
-{
- int i;
-
- for( i=0; mtx[i]; i++ )
- {
- FreeFloatVec( mtx[i] );
- }
- free( mtx );
-}
-
-int *AllocateIntVec( int ll1 )
-{
- int *vec;
-
- vec = (int *)calloc( ll1, sizeof( int ) );
- if( vec == NULL )
- {
- fprintf( stderr, "Allocation error( %d int vec )\n", ll1 );
- exit( 1 );
- }
- return( vec );
-}
-
-void FreeIntVec( int *vec )
-{
- free( (char *)vec );
-}
-
-float **AllocateFloatTri( int ll1 )
-{
- float **tri;
- int i;
-
- tri = (float **)calloc( (unsigned int)ll1+1, sizeof( float * ) );
- if( !tri )
- {
- fprintf( stderr, "Allocation error ( float tri )\n" );
- exit( 1 );
- }
- for( i=0; i<ll1; i++ )
- {
- tri[i] = AllocateFloatVec( i+3 );
- }
- tri[ll1] = NULL;
-
- return( tri );
-}
-
-void FreeFloatTri( float **tri )
-{
-/*
- float **x;
- x = tri;
- while( *tri != NULL ) free( *tri++ );
- free( x );
-*/
- int i;
- for( i=0; tri[i]; i++ )
- free( tri[i] );
- free( tri );
-}
-
-int **AllocateIntMtx( int ll1, int ll2 )
-{
- int i;
- int **mtx;
-
- mtx = (int **)calloc( ll1+1, sizeof( int * ) );
- if( !mtx )
- {
- fprintf( stderr, "Allocation error( %d x %d int mtx )\n", ll1, ll2 );
- exit( 1 );
- }
- if( ll2 )
- {
- for( i=0; i<ll1; i++ )
- {
- mtx[i] = AllocateIntVec( ll2 );
- }
- }
- mtx[ll1] = NULL;
- return( mtx );
-}
-
-/*
-void FreeIntMtx( int **mtx )
-{
-*
- int **x;
- x = mtx;
- while( !*mtx ) free( *mtx++ );
- free( x );
-*
- int i;
- for( i=0; mtx[i] != NULL; i++ )
- free( (char *)mtx[i] );
- free( (char *)mtx );
-}
-*/
-
-char ***AllocateCharCub( int ll1, int ll2, int ll3 )
-{
- int i;
- char ***cub;
-
- cub = (char ***)calloc( ll1+1, sizeof( char ** ) );
- if( !cub )
- {
- fprintf( stderr, "Allocation error( %d x %d x %d char cube\n", ll1, ll2, ll3 );
- exit( 1 );
- }
- if( ll2 )
- {
- for( i=0; i<ll1; i++ )
- {
- cub[i] = AllocateCharMtx( ll2, ll3 );
- }
- }
- cub[ll1] = NULL;
- return( cub );
-}
-
-void FreeCharCub( char ***cub )
-{
- int i;
-
- for( i=0; cub[i]; i++ )
- {
- FreeCharMtx( cub[i] );
- }
- free( cub );
-}
-
-void freeintmtx( int **mtx, int ll1, int ll2 )
-{
- int i;
-
- for( i=0; i<ll1; i++ )
- free( (char *)mtx[i] );
- free( (char *)mtx );
-}
-
-void FreeIntMtx( int **mtx )
-{
- int i;
-
- for( i=0; mtx[i]; i++ )
- free( (char *)mtx[i] );
- free( (char *)mtx );
-}
-
-char ****AllocateCharHcu( int ll1, int ll2, int ll3, int ll4 )
-{
- int i;
- char ****hcu;
-
- hcu = (char ****)calloc( ll1+1, sizeof( char *** ) );
- if( hcu == NULL ) exit( 1 );
- for( i=0; i<ll1; i++ )
- hcu[i] = AllocateCharCub( ll2, ll3, ll4 );
- hcu[ll1] = NULL;
- return( hcu );
-}
-
-void FreeCharHcu( char ****hcu )
-{
- int i;
- for( i=0; hcu[i]; i++ )
- {
- FreeCharCub( hcu[i] );
- }
- free ( (char *)hcu );
-}
-
-double *AllocateDoubleVec( int ll1 )
-{
- double *vec;
-
- vec = (double *)calloc( ll1, sizeof( double ) );
- return( vec );
-}
-
-void FreeDoubleVec( double *vec )
-{
- free( vec );
-}
-
-int ***AllocateIntCub( int ll1, int ll2, int ll3 )
-{
- int i;
- int ***cub;
-
- cub = (int ***)calloc( ll1+1, sizeof( int ** ) );
- if( cub == NULL )
- {
- fprintf( stderr, "cannot allocate IntCub\n" );
- exit( 1 );
- }
- for( i=0; i<ll1; i++ )
- cub[i] = AllocateIntMtx( ll2, ll3 );
- cub[ll1] = NULL;
-
- return cub;
-}
-
-void FreeIntCub( int ***cub )
-{
- int i;
- for( i=0; cub[i]; i++ )
- {
- FreeIntMtx( cub[i] );
- }
- free( cub );
-}
-
-double **AllocateDoubleMtx( int ll1, int ll2 )
-{
- int i;
- double **mtx;
- mtx = (double **)calloc( ll1+1, sizeof( double * ) );
- if( !mtx )
- {
- fprintf( stderr, "cannot allocate DoubleMtx\n" );
- exit( 1 );
- }
- if( ll2 )
- {
- for( i=0; i<ll1; i++ )
- mtx[i] = AllocateDoubleVec( ll2 );
- }
- mtx[ll1] = NULL;
-
- return mtx;
-}
-
-void FreeDoubleMtx( double **mtx )
-{
- int i;
- for( i=0; mtx[i]; i++ )
- FreeDoubleVec( mtx[i] );
- free( mtx );
-}
-
-float ***AllocateFloatCub( int ll1, int ll2, int ll3 )
-{
- int i;
- float ***cub;
-
- cub = (float ***)calloc( ll1+1, sizeof( float ** ) );
- if( !cub )
- {
- fprintf( stderr, "cannot allocate float cube.\n" );
- exit( 1 );
- }
- for( i=0; i<ll1; i++ )
- {
- cub[i] = AllocateFloatMtx( ll2, ll3 );
- }
- cub[ll1] = NULL;
- return( cub );
-}
-
-void FreeFloatCub( float ***cub )
-{
- int i;
-
- for( i=0; cub[i]; i++ )
- {
- FreeFloatMtx( cub[i] );
- }
- free( cub );
-}
-
-double ***AllocateDoubleCub( int ll1, int ll2, int ll3 )
-{
- int i;
- double ***cub;
-
- cub = (double ***)calloc( ll1+1, sizeof( double ** ) );
- if( !cub )
- {
- fprintf( stderr, "cannot allocate double cube.\n" );
- exit( 1 );
- }
- for( i=0; i<ll1; i++ )
- {
- cub[i] = AllocateDoubleMtx( ll2, ll3 );
- }
- cub[ll1] = NULL;
- return( cub );
-}
-
-void FreeDoubleCub( double ***cub )
-{
- int i;
-
- for( i=0; cub[i]; i++ )
- {
- FreeDoubleMtx( cub[i] );
- }
- free( cub );
-}
-
-
-short *AllocateShortVec( int ll1 )
-{
- short *vec;
-
- vec = (short *)calloc( ll1, sizeof( short ) );
- if( vec == NULL )
- {
- fprintf( stderr, "Allocation error( %d short vec )\n", ll1 );
- exit( 1 );
- }
- return( vec );
-}
-
-void FreeShortVec( short *vec )
-{
- free( (char *)vec );
-}
-
-short **AllocateShortMtx( int ll1, int ll2 )
-{
- int i;
- short **mtx;
-
-
- mtx = (short **)calloc( ll1+1, sizeof( short * ) );
- if( !mtx )
- {
- fprintf( stderr, "Allocation error( %d x %d short mtx ) \n", ll1, ll2 );
- exit( 1 );
- }
- for( i=0; i<ll1; i++ )
- {
- mtx[i] = AllocateShortVec( ll2 );
- }
- mtx[ll1] = NULL;
- return( mtx );
-}
-
-void FreeShortMtx( short **mtx )
-{
- int i;
-
- for( i=0; mtx[i]; i++ )
- free( (char *)mtx[i] );
- free( (char *)mtx );
-}
-