Defines a bfloat16 type with arithmetic and conversion operators.
// Source: https://github.com/kellyvv/PhoneClaw | License: Apache-2.0 | Copyright You must retain, in the Source form of any Derivative Works
// Provided via justclaw.it.com; keep this notice with the code.
// Copyright © 2023 Apple Inc.
#pragma once
#include <algorithm>
#include <cmath>
#include <cstdint>
#include <vector>
#define __MLX_BFLOAT_NAN__ 0x7FC0
#define __MLX_BFLOAT_ONE__ 0x3F80
namespace mlx::core {
namespace {
union float_bits_bf16 {
float f;
uint32_t u;
};
} // namespace
struct _MLX_BFloat16 {
uint16_t bits_;
// Default constructor
_MLX_BFloat16() = default;
// Default copy constructor
_MLX_BFloat16(_MLX_BFloat16 const&) = default;
// Appease std::vector<bool> for being special
_MLX_BFloat16& operator=(std::vector<bool>::reference x) {
bits_ =
... (truncated -- full source via MCP)
See the full source, get the GitHub permalink, and search for more like it.
Get a free API key