Algorithm-NCS

 view release on metacpan or  search on metacpan

Algorithm-NCS/lib/Algorithm/NCS.pm  view on Meta::CPAN

package Algorithm::NCS;

use 5.020002;
use strict;
use warnings;

use Data::Dumper;

require Exporter;

our @ISA = qw(Exporter);

# Items to export into callers namespace by default. Note: do not export
# names by default without a very good reason. Use EXPORT_OK instead.
# Do not simply export all your public functions/methods/constants.

# This allows declaration	use Algorithm::NCS ':all';
# If you do not need this, moving things directly into @EXPORT or @EXPORT_OK
# will save memory.
our %EXPORT_TAGS = ( 'all' => [ qw(
	ncs
) ] );

our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );

our @EXPORT = qw(
	ncs
);

our $VERSION = '0.04';

# use Inline C => config => auto_include => '#include "../../cncs.h"';
use Inline C => <<'ENDC';
unsigned int xs_ncs(AV* a, AV* b){
	unsigned long int xl = 1+av_len(a);
	unsigned long int yl = 1+av_len(b);
	
	unsigned short int x[xl];
	for(unsigned long int i=0; i<xl; i++)
		x[i] = SvUVx(av_shift(a));
		
	unsigned short int y[yl];
	for(unsigned long int i=0; i<yl; i++)
		y[i] = SvUVx(av_shift(b));
		
	return c_ncs(&x, &y, xl, yl);
}
int c_ncs(
	unsigned short int *x, 
	unsigned short int *y, 
	unsigned long int xl, 
	unsigned long int yl
	){	
    unsigned long int i;
    unsigned long int j;
    unsigned long int k;
	
	xl+=1; yl+=1;
	
	unsigned short int **c = (unsigned short int**) malloc (xl * sizeof(unsigned short int*));
	for(i=0; i<xl; ++i) 
		c[i] = malloc (yl * sizeof(unsigned short int));
	for(i=0; i<xl; i++)
		for(j=0; j<yl; j++)
			c[i][j] = 0;

    for(i=1; i<xl; i++)



( run in 0.634 second using v1.01-cache-2.11-cpan-39bf76dae61 )