AI-NeuralNet-FastSOM
view release on metacpan or search on metacpan
- update copyright notice
- clean up tests
0.16 Sat Jan 3 05:53:12 EST 2015
- version bump - hasnt been tested in a while...
- added auto-README generation to Makefile.PL
- update copyright notice
0.15 Wed Jul 11 00:13:02 2012
- tidy up build a bit
- fixed warnings from CODE blocks using RETVAL without OUTPUT
blocks in newer perls
- yet another typemap workaround. this time we have a 5.6.2 with
a new ParseXS and an old xsubpp. i wont even mention the problem
i found in old Test::More finding this. i hope it never becomes
an issue. (Note: since this is an almost 3 year old issue and
haven't seen any more cases, we'll assume it was isolated
to a single user to start with and the whole mess is fixed
now.)
0.14 Fri Aug 21 12:52:32 2009
croak("self has no magic!\n");
som = self2somptr(self,mg);
_bmuguts(som,sample,&cx,&cy,&cd);
PERL_UNUSED_VAR(items); /* -W */
sp = mark;
XPUSHs(sv_2mortal(newSViv(cx)));
XPUSHs(sv_2mortal(newSViv(cy)));
XPUSHs(sv_2mortal(newSVnv(cd)));
PUTBACK;
}
SV* _som_map(SV* self) {
MAGIC *mg;
SOM_GENERIC *som;
if ( !(mg = selfmagic(self)) )
croak("self has no magic!\n");
som = self2somptr(self,mg);
_adjustn(som,l,sigma,n,sample);
}
}
Safefree(n);
Safefree(org);
Safefree(veg);
PUTBACK;
}
void _som_FREEZE(SV* self,SV* cloning) {
IV x,y,z;
MAGIC *mg;
SOM_Map *m;
SOM_Array *a;
SOM_Vector *v;
SOM_GENERIC *som;
dXSARGS;
XPUSHs(newRV_noinc(newSVnv(
(&v->element)[z])));
}
}
}
}
else {
croak("i wanna run with scissors!");
}
} /* cloning */
PUTBACK;
}
void _som_THAW(SV* self,SV* cloning,SV* serialized) {
IV x,y,z,i;
SV *rrr;
HV *stash;
SOM_Map *m;
SOM_Array *a;
SOM_Vector *v;
SOM_GENERIC *som;
}
else if ( SvTYPE(SvRV(self)) != SVt_PVHV )
croak("you'll put an eye out!");
} /* cloning */
PERL_UNUSED_VAR(items); /* -W */
sp = mark;
PUTBACK;
}
SV* _som_FETCH(SV* self,SV* key) {
if ( !sv_cmp( key, INT2PTR(SV*,newSVpvn("map",3) ) ) ) {
SOM_GENERIC *som = INT2PTR(SOM_Rect*,self2iv(self));
SvREFCNT_inc(som->map->ref);
return som->map->ref;
}
if ( !sv_cmp( key, INT2PTR(SV*,newSVpvn("_X",2) ) ) )
return newSViv(tied2ptr(self)->X);
som->ref = rv;
/*
* here 'hash' is the object seen from the perl side.
* 'tie' is what we see from the c side when accessing the tied
* functionality.
*/
sp = mark;
XPUSHs(rv);
PUTBACK;
}
SV* _rect_radius(SV* self) {
MAGIC *mg;
SOM_GENERIC *som;
if ( !(mg = selfmagic(self)) )
croak("self has no magic!\n");
som = self2somptr(self,mg);
tie = newRV_noinc(newSViv(PTR2IV(hexa)));
stash = gv_stashpv(class, GV_ADD);
sv_bless(tie, stash);
hv_magic(hash, (GV*)tie, PERL_MAGIC_tied);
rv = sv_bless(newRV_noinc((SV*)hash),stash);
hexa->ref = rv;
sp = mark;
XPUSHs(rv);
PUTBACK;
}
NV _hexa_distance(NV x1,NV y1,NV x2,NV y2) {
NV tmp,dx,dy;
if ( x1+y1 > x2+y2 ) {
tmp=x1; x1=x2; x2=tmp;
tmp=y1; y1=y2; y2=tmp;
}
SV * self
NV sigma
IV X
IV Y
PREINIT:
I32* temp;
CODE:
temp = PL_markstack_ptr++;
RETVAL = _neighbors(self, sigma, X, Y);
PL_markstack_ptr = temp;
OUTPUT:
RETVAL
SV *
radius (self)
SV * self
PREINIT:
SV* rv;
CODE:
rv = _rect_radius(self);
ST(0) = rv;
SV * self
NV sigma
IV X
IV Y
PREINIT:
I32* temp;
CODE:
temp = PL_markstack_ptr++;
RETVAL = _neighbors(self, sigma, X, Y);
PL_markstack_ptr = temp;
OUTPUT:
RETVAL
MODULE = AI::NeuralNet::FastSOM PACKAGE = AI::NeuralNet::FastSOM::Hexa
PROTOTYPES: DISABLE
void
SV * self
NV sigma
IV X
IV Y
PREINIT:
I32* temp;
CODE:
temp = PL_markstack_ptr++;
RETVAL = _neighbors(self, sigma, X, Y);
PL_markstack_ptr = temp;
OUTPUT:
RETVAL
MODULE = AI::NeuralNet::FastSOM PACKAGE = AI::NeuralNet::FastSOM::Utils
PROTOTYPES: DISABLE
NV
const char * T_PV
AV_SPECIAL * T_AVREF_SPECIAL
AV * T_AVREF
###############################################################################
INPUT
T_AVREF_SPECIAL
if (SvTYPE($arg)==SVt_PVMG && SvRMAGICAL($arg) && mg_find($arg,'p'))
mg_get($arg);
if (SvROK($arg) && SvTYPE(SvRV($arg))==SVt_PVAV)
$var = (AV*)SvRV($arg);
else
Perl_croak(aTHX_ \"%s: %s is not a magical array reference\",
${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
\"$var\")
T_AVREF
if (SvROK($arg) && SvTYPE(SvRV($arg))==SVt_PVAV)
$var = (AV*)SvRV($arg);
else
Perl_croak(aTHX_ \"%s: %s is not an array reference\",
${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
\"$var\")
###############################################################################
OUTPUT
T_AVREF_SPECIAL
$arg = newRV((SV*)$var);
T_AVREF
$arg = newRV((SV*)$var);
const char * T_PV
AV_SPECIAL * T_AVREF_SPECIAL
###############################################################################
INPUT
T_AVREF_SPECIAL
if (SvTYPE($arg)==SVt_PVLV && SvRMAGICAL($arg) && mg_find($arg,'p'))
mg_get($arg);
if (SvROK($arg) && SvTYPE(SvRV($arg))==SVt_PVAV)
$var = (AV*)SvRV($arg);
else
Perl_croak(aTHX_ \"%s: %s is not a magical array reference\",
${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
\"$var\")
###############################################################################
OUTPUT
T_AVREF_SPECIAL
$arg = newRV((SV*)$var);
( run in 0.328 second using v1.01-cache-2.11-cpan-d6f9594c0a5 )