タグ

数学とプログラミングに関するvccのブックマーク (16)

  • 128ビット符号付き整数の最大値は素数 - Rustで任意精度整数演算

    概要 2^n-1 型の数はメルセンヌ数と呼ばれ、更に素数である場合にメルセンヌ素数といいます。記事では、メルセンヌ数に対する高速な素数判定法であるリュカ・レーマーテストを、Rustの任意精度演算用クレート rug を利用して実装します。 実行環境 CPU: Intel Core i7 1.8GHz メモリ: 16GB OS(ホスト): Windows 10 Home 21H1 WSL2: Ubuntu 20.04.3 rustc: Ver. 1.55.0 cargo: Ver. 1.55.0 符号付き整数型の範囲について Rustには組み込みの整数型として 8,\,16,\,32,\,64,\,128 ビット整数[1]がそれぞれ符号付き・符号なしで備わっています[2]。そのうち符号付き整数は、他の多くの言語と同様、2の補数によって負の数が表現されます。したがって、ビット数 n = 8,

    128ビット符号付き整数の最大値は素数 - Rustで任意精度整数演算
  • プログラミングの仕組みを理解する方法 - JavaScript勉強会

    この記事は、プログラミングの専門教育(大学のコンピューターサイエンスなど)を受けておらず、独学でプログラミングを学習している方へ贈るアドバイスです。 =タイムマシンがあったら、過去の自分に会いに行って教えたい話です。 (自分で自分に話しかけるつもりで書いてみますw) プログラミング言語はひとつマスターすれば他もできる? - t-hom’s diary [プログラミング] [設計] [教育] プログラミングパラダイムは(1)命令型(チューリングマシン)、(2)宣言型(ラムダ計算)に大別される。両方理解したら全部カバーできる。言語は開発の背景(動機、歴史)を知るとなじみやすい。例:JSはScheme+Selfで誕生 2019/09/16 06:49 b.hatena.ne.jp ↑はてなブックマークでこの記事が目にとまりました。 なるほどと思いつつ、自分なりに考えてみたことをメモ。 勉強のコツ

    プログラミングの仕組みを理解する方法 - JavaScript勉強会
  • マイコンでtan(355/226)の計算 - 滴了庵日録

    tan(355/226)の計算は関数電卓の正確さを試すベンチマークによく使われるらしいです。というのも、355/226はπ/2に極めて近い有理数であり、π/2近傍でtanは無限大に発散するからです。 下表のように両者は10進数で7桁まで一致しています。 π/2 1.5707963267948966192313216916398 355/226 1.5707964601769911504424778761062 tan(355/226) の真の値は、-7497258.185...ですが、この近傍でラジアン値の有効数字10桁目が1ズレるだけでtanの値は有効数字3桁目からズレてきます。ちなみに、Androidの関数電卓アプリの定番といえるRealCalcは正しい10桁の値を出しますが、市販の関数電卓では4桁〜7桁くらいの正確さになるのものが多いようです。 今回は、いろいろなマイコン/開発環境で

    マイコンでtan(355/226)の計算 - 滴了庵日録
  • 計算量オーダーの求め方を総整理! 〜 どこから log が出て来るか 〜 - Qiita

    NTT データ数理システムでリサーチャーをしている大槻 (通称、けんちょん) です。今回は計算量オーダーの求め方について書きます。 0. はじめに 世の中の様々なシステムやソフトウェアはアルゴリズムによって支えられています。Qiita Contribution ランキング作成のために用いるソートアルゴリズムのような単純なものから、カーナビに使われている Dijkstra 法、流行中のディープラーニングに用いられている確率的勾配降下法など、様々な場面でアルゴリズムが活躍しています。アルゴリズムとはどんなものかについて具体的に知りたい方には以下の記事が参考になると思います: アルゴリズムとは何か ~ 文系理系問わず楽しめる精選 6 問 ~ アルゴリズムを学ぶと $O(n^2)$ や $O(n\log{n})$ や $O(2^n)$ といった計算量オーダーの概念が登場します。こうした記法を見ると

    計算量オーダーの求め方を総整理! 〜 どこから log が出て来るか 〜 - Qiita
  • Pythonでの数値計算ライブラリNumPy徹底入門

    NumPyは、多次元配列を扱う数値演算ライブラリです。機械学習だけでなく画像処理、音声処理などコンピュータサイエンスをするならNumPyを学んでおくことで、あなたの日々の研究や開発の基礎力は格段にアップするはずです。 プログラミングの初心者から、Webエンジニア、これから研究する人など、初学者にも分かりやすく優しく説明することを心がけて必要な知識が身につくように解説しています。 腰を据えて学習する時間と余裕のある方は、Step1から順に進めていくことで、苦手意識のあった方でも一通り読み終わる頃には理解できなかったPythonとNumPyのソースコードがスラスラと読めるようになるはずです。 上級者の方は、分からない記事だけ読むだけでも、力になると思われます。あなたのプログラミング能力を向上する手助けになることをお約束します。このサイトを通して、コンピュータサイエンスに入門しましょう。 Ste

    Pythonでの数値計算ライブラリNumPy徹底入門
  • プログラミング教育なんてやっている場合ではない――高校までに必要な本当の学力

    近年、21世紀型スキルとして、コミュニケーションスキル、問題解決能力などを伸ばすため、アクティブラーニングや反転学習、初等教育での英語必須化、プログラミング教育といった手法が注目されている。しかし、新井氏はこれからの時代、当に必要なのはこれら表面的な知識やスキルではないという。 国立情報学研究所社会共有知センター長 新井紀子氏 東ロボくんが目指したもの 新井氏は2011年からAIにセンター試験の問題を解かせ、東大に合格できるかどうか、というプロジェクト「東ロボくん」をスタートさせた。2016年、センター模試で総合偏差値57.1の成績で、2次試験の基準を満たさなかったため、結果としては東大合格は実現しなかったが、実力としては全大学の75%が合格率80%の圏内に入るほどのAIを作り上げた。80%圏内には、23の国立大学、512の私立大学が含まれる。MARCH/関関同立ならば十分合格できるレベ

    プログラミング教育なんてやっている場合ではない――高校までに必要な本当の学力
    vcc
    vcc 2017/07/20
    現在のAIは、『論理』『統計』『確率』の3つの『言語』でしか動いていない、物事を表すことはできるが意味を理解できない。意味を理解し、思考するために別の数学言語が必要。当面はシンギュラリティはこない。
  • 円周率の16進数表現100億桁目を求めてみた! ― 円周率の世界記録をどのように検証するか ― - プログラムモグモグ

    あなたは円周率を何桁言えますか。3.14159…という、あの数字です。 円周率の小数部分は無限に続き、循環することもありません。 古来より、数学者は円周率の値を様々な幾何学的な近似や公式を用いて計算してきました。 その桁数は計算機の発明により飛躍的に伸び、収束の速い公式の発見や効率の良いアルゴリズムの発明などによって加速してきました *1。 5年前、私がまだ学生だった頃、円周率1億桁の計算に挑んだことがありました。 私にとって高精度計算の初めての挑戦で、様々な試行錯誤で苦労したのをよく覚えています。 itchyny.hatenablog.com 2017年現在、円周率計算の世界記録は22兆桁です。 円周率計算の歴史をご覧いただくとよく分かると思いますが、近年の円周率計算の世界記録からは次のような特徴が読み取れます。 2002年に1兆を超え、最新の記録 (2016年) は22兆桁 (10進数

    円周率の16進数表現100億桁目を求めてみた! ― 円周率の世界記録をどのように検証するか ― - プログラムモグモグ
    vcc
    vcc 2017/03/14
    円周率の公式でBBP formulaと呼ばれているものがあります。この公式を使えば、円周率の16進数表現の任意の桁を、高速に求めることができるのです。
  • Webプログラマと数学の接点、その入り口

    フロントエンドのパラダイムを参考にバックエンド開発を再考する / TypeScript による GraphQL バックエンド開発

    Webプログラマと数学の接点、その入り口
  • 見落としがちな整数関連の脆弱性(後編)

    見落としがちな整数関連の脆弱性(後編):もいちど知りたい、セキュアコーディングの基(5)(1/2 ページ) 前回に続き、バグの中でも大きな割合を占める整数の取り扱いに関する脆弱性について解説します。今回取り上げるのは「切り捨て」「符号拡張/ゼロ拡張」についてです。 「Coverity Scan レポート」にみる整数関連のバグ 初めに、脆弱性に関する最近のトピックスとして「Coverity Scanレポート」を紹介したいと思います。 2013年5月7日、静的解析ツールベンダの米Coverityは、2012年度版「Coverity Scan レポート」を公開しました。 Coverityは、自社のコード解析ツールを使ってオープンソースソフトウェア(OSS)を解析し、解析結果を無償で開発者に提供することを通じて、OSSコミュニティのコード品質向上に寄与する「Coverity Scan」プロジェク

    見落としがちな整数関連の脆弱性(後編)
  • hnwの日記 - PHPの奇妙なround関数

    (2012/11/01追記) 4年ほど前の記事「PHP5.3.0alpha3のround関数の実装がPHP5.2.6と変わった - hnwの日記」でお伝えした通り、PHP 5.3.0から別の実装が採用されており、ページで指摘しているような挙動のPHPは既に絶滅危惧種です。念のため。 さて、プログラミングの話題もたまには書いてみます。今回はPHPのround関数の挙動が変だ!という話題です。 round()は浮動小数点数を四捨五入する関数で、大抵の言語に同じ名前で実装されているかと思います。ではPHPのround関数の何が問題なのか、ちょっと試してみましょう。 $ uname -sro Linux 2.6.9-42.0.10.plus.c4smp GNU/Linux $ php --version PHP 5.1.6 (cli) (built: Feb 23 2007 06:56:38)

    hnwの日記 - PHPの奇妙なround関数
  • Mersenne Twister DLL

    */ Mersenne Twisterの詳細はこちら(松 眞先生のページ) DLL版アーカイブ(ソース含む) Zip 40.9 kbytes 7-Zip 21.3 kbytes 2008-12-31. 追加:MT.dll(mt19937ar.dll相当)、MT-cok.dll(mt19937ar-cok.dll相当) Zip 16.8 kbytes 7-Zip 11.4 kbytes ※圧縮形式が異なるだけで、同じアーカイブです。 LICENSE: mt19937.dll(mt19937-dll.c):'mt19937-2.c'のライセンスに準じます。(Artistic License) mt19937m.dll(mt19937-mdll.c):'mt19937-2.c'のライセンスに準じます。(Artistic License) cokus.dll(cokus-dll.c):'coku

  • 【イベントレポート】 【GTCレポート】日本ユニシス、CUDAでリコメンドシステムを実装

  • FF(16進数の掛け算)を覚えよう - やねうらおブログ(移転しました)

    最近、あるプログラマと話していて気づいたのだけど、彼は16進数の2桁と1桁との掛け算(FDh×5とか)が出来ない。やり方自体を知らないのだ。彼はWindowsの電卓を立ち上げて計算していた。 そのときは「プログラマでなくともこんなこと知ってて当然だろ!」と思ったのだけど、その後、10人ぐらいのプログラマに出来るかどうか聞いてみたが誰も出来ない。 結局、「普通は出来ない」のだと私は理解した。しかし16進数の掛け算はそんなに難しくない。私が子供のころには、まわりにFF(1×1=1に始まって、F×F=E1まで)を丸暗記している人がいっぱいいた。情報教育の一環として中学か高校で教えても計算の仕方ぐらい教えればいいのになぁと思っている。 前置きが長くなったが、以下にやり方などを書いておく。 ■ 16進数に馴染もう 16進数では、A = 10 , B = 11 , C = 12 , D = 13 ,

    FF(16進数の掛け算)を覚えよう - やねうらおブログ(移転しました)
  • 浮動小数点演算ではまった話 - bkブログ

    浮動小数点演算ではまった話 浮動小数点演算のありがちな問題ではまりました。 いろいろ調べているうちに x86 特有のちょっとおもしろい 現象に遭遇したので紹介したいと思います。 パーセンテージの計算 簡単な C のプログラムでパーセンテージを計算しようと思い、 次のようなコードを書きました。 int x, y; ... int a = (double)x / y * 100; int a = x * 100 / y としないのは、 x が大きい場合に x * 100 が オーバーフローを起こす (INT_MAX を越える) ためです。 このコードは一見、期待通りに動いていたのですが、 しばらく使っていると、手元の環境では x = 53, y = 100 のときに a は 53 ではなく 52 になることに気づきました。 これは次の理由によります。 式の最初の (double)53 / 10

  • 後藤弘茂のWeekly海外ニュース - GeForce GTX 280の倍精度浮動小数点演算

    ●倍精度浮動小数点演算の4つのポイント NVIDIAは、CUDAとG80アーキテクチャによって、ハイパフォーマンスコンピューティング(HPC)である程度の成功の足がかりを掴んだ。そうしたNVIDIAにとって、倍精度浮動小数点演算のサポートは、欠かせない要素だ。HPCのアプリケーションでは、倍精度が必要となる局面があるからだ。GPUコンピューティング向けのTesla製品では、倍精度演算はカギとなると言ってもいい。「これまでも、倍精度の壁によって移植できなかったアプリケーションがかなりあった」とNVIDIAは必要性を強調する。 問題は、現状のリアルタイムグラフィックスでは、単精度(32-bit)までの浮動小数点演算しか必要とされないこと。そのため、これまでのGPUは単精度演算ユニットしか実装しておらず、GPUでの倍精度演算のサポートには、いくつかのポイントと疑問点がある。 (1)IEEE 75

  • 数学の問題を好きなプログラミング言語で解く「Project Euler」 | gihyo.jp

    仕事以外でもプログラミングを楽しみたい人は「Project Euler」に挑戦してみてはいかがでしょうか。Project Eulerは数学の問題を好きなプログラミング言語で解き正解数を競うサイトです。答えがあっていればよく、アルゴリズムなどは問われません。現在200近い数の問題があり、2万人以上のユーザ中、全問正解しているのはわずか20人あまりです。 初めのほうは比較的難易度が低く、たとえば最初の問題は次の通りです。 10未満の自然数で3または5の倍数は3、5、6、9です。これらの倍数の和は23になります。1,000未満で3または5の倍数の和を求めなさい。 だんだんと問題が進むにつれ、難易度の高いものやマシンに長い時間かけて計算をさせるものが出てきます。 正解すると該当問題のフォーラムを閲覧でき、そこにはいろんなユーザが回答したソースコードを見ることができます。 英語が苦手な方は、問題文を

    数学の問題を好きなプログラミング言語で解く「Project Euler」 | gihyo.jp
  • 1