2024-08-10 Fortran标准库系列:MOD vs MODULO Fortran标准库系列:MOD vs MODULO 取余运算 vs 取模运算取余运算(remainder)在计算商时,会将商向0方向舍入。这意味着取余运算尽可能让余数的绝对值最小。取模运算(modulus)在计算商时,会将商向负无穷方向舍入。取模运算尽可能让商的值最小。当两个数都是正数时,取余运算和取模运算的结果是一样的,因为它们的商都是向0方向舍入的。然而,当两个数符号不同时,取余运算和取模运算的结果会不同。Fortran标准提供取余函数MOD和取模函数MODULO。MOD函数计算A除以P的余数。R=MOD(A,P)参数A是INTEGER或者REAL类型的标量。参数P必须与A相同类型和精度,不能为0。函数返回结果是$A-(INT(A/P)* P)$ ,返回值R符号与参数A相同,且$|R|<|P|$。MODULO计算A对P取模结果。R=MODULO(A,P)参数A是INTEGER或REAL类型的标量。参数P必须与A相同类型和精度,。返回结果类型和精度与参数相同,且返回值R符号与P相同,且$|R|<|P|$。。如果A和P是INTEGER类型,返回结果R满足$A=Q*P+R$ ,其中Q是一个整数,$R\in [0,P)$ ... 2024年08月10日 257 阅读 0 评论
2024-08-10 C面向对象 C面向对象 五星上将麦克阿瑟曾说过:“不是C不能OOP,而是C++更有性价比”。面向对象编程是一种编程思想,不和具体的语言工具绑定,但有些语言在语法层面支持使得面向对象编程实现更容易,比如C++,Python。我们常说C语言是一门面向过程的语言,但实际上也可以通过C结构体、函数指针来模拟实现面向对象编程。本文实例来自《嵌入式C语言自我修养》(王利涛编著)。类的模拟C语言中没有class关键字,但可以用结构体模拟一个类(C++中类定义也可以用struct),结构体成员类似C++类中属性,成员函数使用结构体中内嵌函数指针来模拟。// animal.c struct animal { int age; int weight; void (*fp)(void); //函数指针模拟成员函数 };类似于C++的类定义// animal.cpp class Animal { public: int age; int weight; void speak(void); //类方法 };如果需要模拟类的多个方法,一个结构体中需... 2024年08月10日 132 阅读 0 评论
2024-08-10 Fortran面向对象(三) Fortran面向对象(三) 继续Fortran面向对象的学习。Unlimited polymorphic typesclass(*) 类型称为无限制多态类型,必须拥有pointer或allocatable属性。括号中用*代替具体的类名表示可以是任意类。(联想C语言中void *通用指针概念)一般不直接使用无限制多态类型,常用作过程的哑元,使用select type结构转换为指定类型使用。CLASS(*), POINTER :: unlimited_ptr unlimited_ptr => base_target SELECT type(unlimited_ptr) TYPE IS (base) PRINT *, "base type: component value: ", unlimited_ptr%i TYPE IS (child) PRINT *, "child type: component values: ", unlimited_ptr%i,unlimited_ptr%j END SELECTpass ... 2024年08月10日 287 阅读 1 评论
2024-08-10 当Zotero遇见了GPT 当Zotero遇见了GPT Zotero-gpt是一款Zotero插件,利用GPT对文献内容(包括摘要、PDF全文或选择文本)进行提问回答,提高文献阅读效率。安装与设置插件地址: https://github.com/MuiseDestiny/zotero-gpt 从官网下载.xpi格式插件,然后拖动到Zotero软件中即可安装。设置:进入“编辑->首选项->高级->编辑器”中搜索gpt进行设置,主要设置OpenAI API KEY,如果是中转key的话,还需要修改接口地址。使用通过快捷键ctrl+/调出zotero-gpt窗口,ESC退出插件使用。zotero-gpt通过comand tag实现具体功能。插件窗口中彩色小框表示Command tag,代表着一个个插件功能,可以自行设置。鼠标左键长按tag会显示tag内容。比如AskPDF这个tag,定义的内容如下图所示。其中触发词表示在提问框中提问时包含这些词语时,直接使用Enter键会触发对应的tag功能。AskPDF触发词包含本文、这篇文章、论文,你可以自定义其它词语。示例:如果提问的内容不包含触发词,也可以鼠标点击对应的tag手动执... 2024年08月10日 327 阅读 0 评论
2024-08-10 Edge浏览器插件推荐 Edge浏览器插件推荐 Adlock Plus去广告LastPass密码管理器DownThemAll批量下载文件Global Speed视频播放速度控制Proxy SwitchyOmega代理插件RSSHub RadarRSS源探测器Simple Allow Copy解除网站限制拷贝插件沉浸式翻译-网页翻译插件网页上同时显示双语功能。效果展示:简悦-SimpleRead网页剪藏,配合Obsidian收藏网页 2024年08月10日 325 阅读 1 评论
2024-08-10 Windows效率软件推荐 Windows效率软件推荐 Listary快捷搜索神器坚果云跨平台同步网盘Mobaxterm & WindTerm远程终端登录软件 2024年08月10日 299 阅读 1 评论
2024-08-09 Linux命令行工具推荐 Linux命令行工具推荐 btop资源监控命令thefucker修正错误命令。在~/.bashrc中添加eval "$(thefuck --alias)"。tldr替代man,直接介绍Linux命令常用用法。fzf模糊搜索神器autojump快捷目录跳转命令ack替代grep命令bat替代cat命令trash-d替代rm命令,模拟回收站功能tmux终端复用软件shellcheckshell脚本语法检查工具fd替代find命令 2024年08月09日 114 阅读 0 评论
2024-07-31 替代RM命令的防误删工具TRASH-D 替代RM命令的防误删工具TRASH-D 前言最近好不容易写了几千行代码,突然担心起会不会发生源代码文件误删掉这件事来^-^虽然使用了GIT进行管理,但没有上传到版本服务器,总感觉不保险,因此研究代替RM命令的工具,将文件“删除”放入到所谓的回收站,而不是彻底的删除,即使误删了也能轻松恢复。在网上找到几款软件,发现trash-cli和trash-d两款软件能够满足需求。但trash-cli对于HPC多分区存储环境不太友好,最终选择了trash-d这款工具。安装项目地址:https://github.com/rushsteve1/trash-d 官方在GITHUB中提供了rpm/deb等安装包。本人使用的机器平台是centos,没有管理员权限,只能安装在个人目录下,从rpm包中抽取可执行文件方式安装。$ rpm2cpio trash-d-19-x86_64.rpm | cpio -idmv $ mv usr trash-d $ vi ~/.bashrc export PATH=/path/to/trash-d/bin:$PATH export MANPATH=/path/to/trash-d/share/man:$MA... 2024年07月31日 255 阅读 0 评论