⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qrng.c

📁 开放gsl矩阵运算
💻 C
字号:
/* Author: G. Jungman */#include <config.h>#include <stdlib.h>#include <string.h>#include <gsl/gsl_errno.h>#include "gsl_qrng.h"gsl_qrng *gsl_qrng_alloc (const gsl_qrng_type * T, unsigned int dimension){  gsl_qrng * r = (gsl_qrng *) malloc (sizeof (gsl_qrng));  if (r == 0)    {      GSL_ERROR_VAL ("allocation failed for qrng struct",			GSL_ENOMEM, 0);    };  r->dimension = dimension;  r->state_size = T->state_size(dimension);  r->state = malloc (r->state_size);  if (r->state == 0)    {      free (r);      GSL_ERROR_VAL ("allocation failed for qrng state",			GSL_ENOMEM, 0);    };  r->type = T;  T->init_state(r->state, r->dimension);  return r;}intgsl_qrng_memcpy (gsl_qrng * dest, const gsl_qrng * src){  if (dest->type != src->type)    {      GSL_ERROR ("generators must be of the same type", GSL_EINVAL);    }  dest->dimension = src->dimension;  dest->state_size = src->state_size;  memcpy (dest->state, src->state, src->state_size);  return GSL_SUCCESS;}gsl_qrng *gsl_qrng_clone (const gsl_qrng * q){  gsl_qrng * r = (gsl_qrng *) malloc (sizeof (gsl_qrng));  if (r == 0)    {      GSL_ERROR_VAL ("failed to allocate space for rng struct",			GSL_ENOMEM, 0);    };  r->dimension = q->dimension;  r->state_size = q->state_size;  r->state = malloc (r->state_size);  if (r->state == 0)    {      free (r);      GSL_ERROR_VAL ("failed to allocate space for rng state",			GSL_ENOMEM, 0);    };  r->type = q->type;  memcpy (r->state, q->state, q->state_size);  return r;}#ifndef HIDE_INLINE_STATICintgsl_qrng_get (const gsl_qrng * r, double x[]){  return (r->type->get) (r->state, r->dimension, x);}#endifconst char *gsl_qrng_name (const gsl_qrng * r){  return r->type->name;}size_tgsl_qrng_size (const gsl_qrng * r){  return r->state_size;}void *gsl_qrng_state (const gsl_qrng * r){  return r->state;}voidgsl_qrng_free (gsl_qrng * r){  if(r != 0) {    if(r->state != 0) free (r->state);    free (r);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -