slasdt.c
来自「最著名最快的分子模拟软件」· C语言 代码 · 共 46 行
C
46 行
#include <math.h>#include "gmx_lapack.h"voidF77_FUNC(slasdt,SLASDT)(int *n, int *lvl, int *nd, int *inode, int *ndiml, int *ndimr, int *msub){ int maxn = (*n > 1) ? *n : 1; float temp; int i,il,ir,llst,nlvl,ncrnt; temp = log( ((float) maxn) / ((float)(*msub+1))) / log(2.0); *lvl = 1 + (int) temp; i = *n / 2; inode[0] = i + 1; ndiml[0] = i; ndimr[0] = *n - i - 1; il = -1; ir = 0; llst = 1; for(nlvl=1;nlvl<*lvl;nlvl++) { for(i=0;i<llst;i++) { il += 2; ir += 2; ncrnt = llst + i - 1; ndiml[il] = ndiml[ncrnt] / 2; ndimr[il] = ndiml[ncrnt] - ndiml[il] - 1; inode[il] = inode[ncrnt] - ndimr[il] - 1; ndiml[ir] = ndimr[ncrnt] / 2; ndimr[ir] = ndimr[ncrnt] - ndiml[ir] - 1; inode[ir] = inode[ncrnt] + ndiml[ir] + 1; } llst *= 2; } *nd = llst*2 - 1; return;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?