亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? kcache.c

?? 用C語言實(shí)現(xiàn)的最新且最快的SVM源碼,可用于解決多類分類問題
?? C
字號:
/*********************************************************************** *  *  LUSH Lisp Universal Shell *    Copyright (C) 2002 Leon Bottou, Yann Le Cun, AT&T Corp, NECI. *  Includes parts of TL3: *    Copyright (C) 1987-1999 Leon Bottou and Neuristique. *  Includes selected parts of SN3.2: *    Copyright (C) 1991-2001 AT&T Corp. *  *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. *  *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. *  *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA *  ***********************************************************************//*********************************************************************** * $Id: kcache.c,v 1.4 2005/11/16 00:10:01 agbs Exp $ **********************************************************************/#include <stdlib.h>#include <stdarg.h>#include <stdio.h>#include <string.h>#include "messages.h"#include "kcache.h"#ifndef min# define min(a,b) (((a)<(b))?(a):(b))#endif#ifndef max# define max(a,b) (((a)>(b))?(a):(b))#endifstruct lasvm_kcache_s {  lasvm_kernel_t func;  void *closure;  long maxsize;  long cursize;  int l;  int *i2r;  int *r2i;  /* Rows */  int    *rsize;  float  *rdiag;  float **rdata;  int    *rnext;  int    *rprev;  int    *qnext;  int    *qprev;};static void *xmalloc(int n){  void *p = malloc(n);  if (! p)     lasvm_error("Function malloc() has returned zero\n");  return p;}static void *xrealloc(void *ptr, int n){  if (! ptr)    ptr = malloc(n);  else    ptr = realloc(ptr, n);  if (! ptr)     lasvm_error("Function realloc has returned zero\n");  return ptr;}static voidxminsize(lasvm_kcache_t *self, int n){  int ol = self->l;  if (n > ol)    {      int i;      int nl = max(256,ol);      while (nl < n)	nl = nl + nl;      self->i2r = (int*)xrealloc(self->i2r, nl*sizeof(int));      self->r2i = (int*)xrealloc(self->r2i, nl*sizeof(int));      self->rsize = (int*)xrealloc(self->rsize, nl*sizeof(int));      self->qnext = (int*)xrealloc(self->qnext, (1+nl)*sizeof(int));      self->qprev = (int*)xrealloc(self->qprev, (1+nl)*sizeof(int));      self->rdiag = (float*)xrealloc(self->rdiag, nl*sizeof(float));      self->rdata = (float**)xrealloc(self->rdata, nl*sizeof(float*));      self->rnext = self->qnext + 1;      self->rprev = self->qprev + 1;      for (i=ol; i<nl; i++)	{	  self->i2r[i] = i;	  self->r2i[i] = i;	  self->rsize[i] = -1;	  self->rnext[i] = i;	  self->rprev[i] = i;	  self->rdata[i] = 0;	}      self->l = nl;    }}lasvm_kcache_t* lasvm_kcache_create(lasvm_kernel_t kernelfunc, void *closure){  lasvm_kcache_t *self;  self = (lasvm_kcache_t*)xmalloc(sizeof(lasvm_kcache_t));  memset(self, 0, sizeof(lasvm_kcache_t));  self->l = 0;  self->func = kernelfunc;  self->closure = closure;  self->cursize = sizeof(lasvm_kcache_t);  self->maxsize = 256*1024*1024;  self->qprev = (int*)xmalloc(sizeof(int));  self->qnext = (int*)xmalloc(sizeof(int));  self->rnext = self->qnext + 1;  self->rprev = self->qprev + 1;  self->rprev[-1] = -1;  self->rnext[-1] = -1;  return self;}void lasvm_kcache_destroy(lasvm_kcache_t *self){  if (self)    {      int i;      if (self->i2r)	free(self->i2r);      if (self->r2i)	free(self->r2i);      if (self->rdata)	for (i=0; i<self->l; i++)	  if (self->rdata[i])	    free(self->rdata[i]);      if (self->rdata)	free(self->rdata);      if (self->rsize)	free(self->rsize);      if (self->rdiag)	free(self->rdiag);      if (self->qnext)	free(self->qnext);      if (self->qprev)	free(self->qprev);      memset(self, 0, sizeof(lasvm_kcache_t));      free(self);    }}int *lasvm_kcache_i2r(lasvm_kcache_t *self, int n){  xminsize(self, n);  return self->i2r;}int *lasvm_kcache_r2i(lasvm_kcache_t *self, int n){  xminsize(self, n);  return self->r2i;}static voidxextend(lasvm_kcache_t *self, int k, int nlen){  int olen = self->rsize[k];  if (nlen > olen)    {      float *ndata = (float*)xmalloc(nlen*sizeof(float));      if (olen > 0)	{	  float *odata = self->rdata[k];	  memcpy(ndata, odata, olen * sizeof(float));	  free(odata);	}      self->rdata[k] = ndata;      self->rsize[k] = nlen;      self->cursize += (long)(nlen - olen) * sizeof(float);    }}static voidxtruncate(lasvm_kcache_t *self, int k, int nlen){  int olen = self->rsize[k];  if (nlen < olen)    {      float *ndata;      float *odata = self->rdata[k];      if (nlen >  0)	{	  ndata = (float*)xmalloc(nlen*sizeof(float));	  memcpy(ndata, odata, nlen * sizeof(float));	}      else	{	  ndata = 0;	  self->rnext[self->rprev[k]] = self->rnext[k];	  self->rprev[self->rnext[k]] = self->rprev[k];	  self->rnext[k] = self->rprev[k] = k;	}      free(odata);      self->rdata[k] = ndata;      self->rsize[k] = nlen;      self->cursize += (long)(nlen - olen) * sizeof(float);    }}static voidxswap(lasvm_kcache_t *self, int i1, int i2, int r1, int r2){  int k = self->rnext[-1];  while (k >= 0)    {      int nk = self->rnext[k];      int n  = self->rsize[k];      int rr = self->i2r[k];      float *d = self->rdata[k];      if (r1 < n)	{	  if (r2 < n)	    {	      float t1 = d[r1];	      float t2 = d[r2];	      d[r1] = t2;	      d[r2] = t1;	    }	  else if (rr == r2)            {              d[r1] = self->rdiag[k];            }          else            {	      int arsize = self->rsize[i2];              if (rr < arsize && rr != r1)                d[r1] = self->rdata[i2][rr];              else                xtruncate(self, k, r1);            }	}      else if (r2 < n)        {          if (rr == r1)            {              d[r2] = self->rdiag[k];            }          else             {	      int arsize = self->rsize[i1];              if (rr < arsize && rr != r2)                d[r2] = self->rdata[i1][rr];              else                xtruncate(self, k, r2);            }        }      k = nk;    }  self->r2i[r1] = i2;  self->r2i[r2] = i1;  self->i2r[i1] = r2;  self->i2r[i2] = r1;}void lasvm_kcache_swap_rr(lasvm_kcache_t *self, int r1, int r2){  xminsize(self, 1+max(r1,r2));  xswap(self, self->r2i[r1], self->r2i[r2], r1, r2);}void lasvm_kcache_swap_ii(lasvm_kcache_t *self, int i1, int i2){  xminsize(self, 1+max(i1,i2));  xswap(self, i1, i2, self->i2r[i1], self->i2r[i2]);}void lasvm_kcache_swap_ri(lasvm_kcache_t *self, int r1, int i2){  xminsize(self, 1+max(r1,i2));  xswap(self, self->r2i[r1], i2, r1, self->i2r[i2]);}double lasvm_kcache_query(lasvm_kcache_t *self, int i, int j){  int l = self->l;  ASSERT(i>=0);  ASSERT(j>=0);  if (i<l && j<l)    {      /* check cache */      int s = self->rsize[i];      int p = self->i2r[j];      if (p < s)	return self->rdata[i][p];      else if (i == j && s >= 0)	return self->rdiag[i];      p = self->i2r[i];      s = self->rsize[j];      if (p < s)	return self->rdata[j][p];    }  /* compute */  return (*self->func)(i, j, self->closure);}static void xpurge(lasvm_kcache_t *self){  if (self->cursize>self->maxsize)    {      int k = self->rprev[-1];      while (self->cursize>self->maxsize && k!=self->rnext[-1])	{	  int pk = self->rprev[k];          xtruncate(self, k, 0);	  k = pk;	}    }}float *lasvm_kcache_query_row(lasvm_kcache_t *self, int i, int len){  ASSERT(i>=0);  if (i<self->l && len<=self->rsize[i])    {      self->rnext[self->rprev[i]] = self->rnext[i];      self->rprev[self->rnext[i]] = self->rprev[i];    }  else    {      int olen, p, q;      float *d;      if (i >= self->l || len >= self->l)	xminsize(self, max(1+i,len));      olen = self->rsize[i];      if (olen < 0)	{	  self->rdiag[i] = (*self->func)(i, i, self->closure);	  olen = self->rsize[i] = 0;	}      xextend(self, i, len);      q = self->i2r[i];      d = self->rdata[i];      for (p=olen; p<len; p++)	{	  int j = self->r2i[p];	  if (i == j)	    d[p] = self->rdiag[i];	  else if (q < self->rsize[j])	    d[p] = self->rdata[j][q];	  else	    d[p] = (*self->func)(i, j, self->closure);	}      self->rnext[self->rprev[i]] = self->rnext[i];      self->rprev[self->rnext[i]] = self->rprev[i];      xpurge(self);    }  self->rprev[i] = -1;  self->rnext[i] = self->rnext[-1];  self->rnext[self->rprev[i]] = i;  self->rprev[self->rnext[i]] = i;  return self->rdata[i];}int lasvm_kcache_status_row(lasvm_kcache_t *self, int i){  ASSERT(self);  ASSERT(i>=0);  if (i < self->l)    return max(0,self->rsize[i]);  return 0;}void lasvm_kcache_discard_row(lasvm_kcache_t *self, int i){  ASSERT(self);  ASSERT(i>=0);  if (i<self->l && self->rsize[i]>0)    {      self->rnext[self->rprev[i]] = self->rnext[i];      self->rprev[self->rnext[i]] = self->rprev[i];      self->rprev[i] = self->rprev[-1];      self->rnext[i] = -1;      self->rnext[self->rprev[i]] = i;      self->rprev[self->rnext[i]] = i;    }}void lasvm_kcache_set_maximum_size(lasvm_kcache_t *self, long entries){  ASSERT(self);  ASSERT(entries>0);  self->maxsize = entries;  xpurge(self);}longlasvm_kcache_get_maximum_size(lasvm_kcache_t *self){  ASSERT(self);  return self->maxsize;}longlasvm_kcache_get_current_size(lasvm_kcache_t *self){  ASSERT(self);  return self->cursize;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区视频免费在线观看| 欧美精品三级日韩久久| 樱桃国产成人精品视频| 欧美一级高清片| 91麻豆精东视频| 国产揄拍国内精品对白| 亚洲午夜精品17c| 国产欧美日韩在线视频| 制服丝袜成人动漫| 91蝌蚪porny九色| 国产精品一区二区在线观看不卡 | 国产精品久久久久久久久久免费看 | 欧美变态口味重另类| 99久久久国产精品| 国产一区二区三区蝌蚪| 国产原创一区二区| 亚洲一区二区三区四区的 | 国产人伦精品一区二区| 欧美放荡的少妇| 在线观看亚洲精品| 99精品桃花视频在线观看| 国产一区二区三区四区在线观看| 首页亚洲欧美制服丝腿| 一区二区视频免费在线观看| 欧美国产国产综合| 久久综合色综合88| 欧美不卡一二三| 91精品婷婷国产综合久久| 欧美色图免费看| 色偷偷久久一区二区三区| 暴力调教一区二区三区| 成人性色生活片免费看爆迷你毛片| 乱一区二区av| 蜜臀av一区二区在线免费观看| 亚洲一区二区五区| 一级女性全黄久久生活片免费| 亚洲欧洲成人精品av97| 国产精品色在线观看| 中文字幕精品三区| 欧美高清在线一区二区| 中文字幕精品一区二区三区精品| 国产日韩在线不卡| 日本一区二区视频在线观看| 国产女人18水真多18精品一级做 | 福利一区在线观看| 一区二区三区四区亚洲| 亚洲男同1069视频| 国产精品 日产精品 欧美精品| 激情欧美一区二区| 国产一区二区电影| 国产精品一区二区在线观看网站| 国产高清不卡一区二区| 成人午夜av在线| 91亚洲精品久久久蜜桃| 一本久久精品一区二区| 精品1区2区3区| 91精品国产综合久久精品| 欧美成人a∨高清免费观看| 久久亚洲私人国产精品va媚药| 国产日韩欧美不卡在线| 亚洲人成在线观看一区二区| 亚洲电影激情视频网站| 蜜桃久久久久久久| 国产高清在线精品| 色偷偷成人一区二区三区91| 欧美日韩免费视频| 精品精品国产高清a毛片牛牛 | 日韩免费一区二区| 亚洲欧美自拍偷拍色图| 夜夜精品视频一区二区| 精品在线免费观看| 欧美一区日本一区韩国一区| 欧美国产激情二区三区| 国产乱理伦片在线观看夜一区| 在线观看欧美黄色| 国产精品女上位| 国产一区 二区| 精品久久久久久久久久久久包黑料| 午夜电影久久久| 日韩av午夜在线观看| 午夜精品一区在线观看| 久久精品国产亚洲一区二区三区| 国产成人免费在线视频| 91国偷自产一区二区开放时间| 6080午夜不卡| 国产精品美女久久久久久久 | 99视频一区二区三区| 欧美日韩卡一卡二| 国产欧美精品在线观看| 亚洲动漫第一页| 国产精品一区免费在线观看| 欧美日韩在线精品一区二区三区激情| 欧美成人伊人久久综合网| 亚洲人吸女人奶水| 国产一区二区三区久久久| 欧美在线高清视频| 日本一区二区视频在线观看| 日韩国产成人精品| 99久久国产综合精品女不卡| 欧美r级电影在线观看| 一区二区三区美女视频| 国产黄色成人av| 日韩一区二区中文字幕| 亚洲免费电影在线| 免费成人av资源网| 亚洲国产电影在线观看| 亚洲综合久久av| 欧美日韩一区在线| 成人aa视频在线观看| 国产欧美日韩综合| 欧美综合在线视频| 久久精品噜噜噜成人88aⅴ| 国产亚洲精品久| 色琪琪一区二区三区亚洲区| 麻豆精品在线视频| 91在线观看高清| 国产风韵犹存在线视精品| 欧美日韩三级视频| 亚洲欧美视频一区| 成人晚上爱看视频| 久久久无码精品亚洲日韩按摩| 三级久久三级久久| 欧美亚洲自拍偷拍| 亚洲精品你懂的| 91丨九色丨蝌蚪丨老版| 欧美激情一区二区三区不卡| 激情深爱一区二区| 中文字幕在线播放不卡一区| 欧美午夜不卡在线观看免费| 精品国产91亚洲一区二区三区婷婷| 欧美国产视频在线| 亚洲一区二区三区在线看| 成人av免费在线| 国产精品视频九色porn| 国产成人综合网站| 久久久精品日韩欧美| 国精产品一区一区三区mba桃花 | 国产精品高清亚洲| 国产91精品在线观看| 国产性色一区二区| 国产精品一区免费在线观看| 久久午夜羞羞影院免费观看| 国内精品国产三级国产a久久| 日韩精品一区二区三区视频在线观看 | 天堂午夜影视日韩欧美一区二区| 欧美性受xxxx黑人xyx性爽| 亚洲一区二区四区蜜桃| 337p亚洲精品色噜噜| 日本欧美一区二区三区乱码| 国产日韩精品一区二区三区| 欧美日韩一区二区三区高清| 一区二区在线观看不卡| 99re热这里只有精品视频| 国产欧美一区在线| 成人av电影免费在线播放| 综合电影一区二区三区 | 99久久精品免费看国产| 亚洲欧美日韩中文播放| 欧美无砖专区一中文字| 亚洲成a人v欧美综合天堂| 亚洲精选一二三| 欧美日韩成人综合在线一区二区| 日韩国产在线观看一区| 久久在线观看免费| 成人动漫在线一区| 亚洲二区在线观看| 精品久久久网站| 成人精品视频一区二区三区 | 国产一区999| 亚洲情趣在线观看| 欧美精品在线视频| 国产成人综合在线播放| 亚洲精品久久久蜜桃| 日韩午夜精品视频| 不卡视频一二三四| 日日夜夜精品视频免费| 亚洲成人激情自拍| 亚洲一区二区三区自拍| 欧美午夜精品电影| 亚洲一区二区三区四区在线观看| 91精品国产色综合久久不卡电影| 国产激情视频一区二区在线观看 | 午夜欧美视频在线观看| 久久女同精品一区二区| 91国偷自产一区二区开放时间 | 中文字幕av资源一区| 欧美日韩精品欧美日韩精品一综合 | 国产精品久久精品日日| 6080午夜不卡| 91在线一区二区三区| 美女一区二区三区| 亚洲精选在线视频| 久久综合精品国产一区二区三区 | 97se亚洲国产综合自在线观| 日韩经典一区二区| 亚洲免费在线看| 久久精品综合网| 欧美一区二区网站| 色视频欧美一区二区三区| 国产麻豆精品一区二区|