📄 dlasdt.c
字号:
#include <math.h>#include "gmx_lapack.h"voidF77_FUNC(dlasdt,DLASDT)(int *n, int *lvl, int *nd, int *inode, int *ndiml, int *ndimr, int *msub){ int maxn = (*n > 1) ? *n : 1; double temp; int i,il,ir,llst,nlvl,ncrnt; temp = log( ((double) maxn) / ((double)(*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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -