{"action":"created","issue":{"url":"https://api.github.com/repos/rust-lang/rfcs/issues/521","labels_url":"https://api.github.com/repos/rust-lang/rfcs/issues/521/labels{/name}","comments_url":"https://api.github.com/repos/rust-lang/rfcs/issues/521/comments","events_url":"https://api.github.com/repos/rust-lang/rfcs/issues/521/events","html_url":"https://github.com/rust-lang/rfcs/issues/521","id":51906649,"number":521,"title":"Add i128 and u128 types","user":{"login":"mahkoh","id":1882250,"avatar_url":"https://avatars.githubusercontent.com/u/1882250?v=3","gravatar_id":"","url":"https://api.github.com/users/mahkoh","html_url":"https://github.com/mahkoh","followers_url":"https://api.github.com/users/mahkoh/followers","following_url":"https://api.github.com/users/mahkoh/following{/other_user}","gists_url":"https://api.github.com/users/mahkoh/gists{/gist_id}","starred_url":"https://api.github.com/users/mahkoh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mahkoh/subscriptions","organizations_url":"https://api.github.com/users/mahkoh/orgs","repos_url":"https://api.github.com/users/mahkoh/repos","events_url":"https://api.github.com/users/mahkoh/events{/privacy}","received_events_url":"https://api.github.com/users/mahkoh/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":8,"created_at":"2014-12-14T02:19:24Z","updated_at":"2015-04-29T21:35:32Z","closed_at":null,"body":"```c\r\ntypedef unsigned long u64;\r\ntypedef __uint128_t u128;\r\n\r\nu64 f(u64 x, u64 y) {\r\n\tu128 mul = (u128)x * (u128)y;\r\n\tmul += 1UL << 63;\r\n\treturn mul >> 64;\r\n}\r\n```\r\nThis produces efficient code that cannot be written in Rust without inline assembly."},"comment":{"url":"https://api.github.com/repos/rust-lang/rfcs/issues/comments/97593102","html_url":"https://github.com/rust-lang/rfcs/issues/521#issuecomment-97593102","issue_url":"https://api.github.com/repos/rust-lang/rfcs/issues/521","id":97593102,"user":{"login":"nagisa","id":679122,"avatar_url":"https://avatars.githubusercontent.com/u/679122?v=3","gravatar_id":"","url":"https://api.github.com/users/nagisa","html_url":"https://github.com/nagisa","followers_url":"https://api.github.com/users/nagisa/followers","following_url":"https://api.github.com/users/nagisa/following{/other_user}","gists_url":"https://api.github.com/users/nagisa/gists{/gist_id}","starred_url":"https://api.github.com/users/nagisa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nagisa/subscriptions","organizations_url":"https://api.github.com/users/nagisa/orgs","repos_url":"https://api.github.com/users/nagisa/repos","events_url":"https://api.github.com/users/nagisa/events{/privacy}","received_events_url":"https://api.github.com/users/nagisa/received_events","type":"User","site_admin":false},"created_at":"2015-04-29T21:35:31Z","updated_at":"2015-04-29T21:35:31Z","body":"I really want this.\r\n\r\n> We had quadruple precision floating point types at one point (@thestinger added them) but they were later removed from the language, citing lack of support across compilers.\r\n\r\nSystem libm must support variety of non-trivial mathematical operations (sine, cosine, etc) on f128 on all platforms we support in order for the type to be useful.\r\n\r\nThis does not apply to i/u128 and, as long as LLVM and Rust support i/u128, nothing else needs to support them. This also means that i/u128 are relatively easier to add compared to f128."}}