blueloveTH 15 часов назад
Родитель
Сommit
ad177b0f55
70 измененных файлов с 2783 добавлено и 5785 удалено
  1. 9 2
      CMakeLists.txt
  2. 3 0
      docs/.gitignore
  3. 127 0
      docs/C-API/execution.md
  4. 2 2
      docs/C-API/index.yml
  5. 99 37
      docs/C-API/introduction.md
  6. 117 0
      docs/C-API/modules.md
  7. 116 252
      docs/bindings-cpp.md
  8. 92 44
      docs/bindings.md
  9. 90 0
      docs/build.md
  10. 45 197
      docs/coding-style-guide.md
  11. 65 72
      docs/features/basic.md
  12. 53 59
      docs/features/debugging.md
  13. 43 29
      docs/features/deploy.md
  14. 129 25
      docs/features/differences.md
  15. 2 2
      docs/features/index.yml
  16. 69 13
      docs/features/profiling.md
  17. 57 135
      docs/features/threading.md
  18. 22 8
      docs/features/ub.md
  19. 6 0
      docs/gsoc2024/guide.md
  20. 6 0
      docs/gsoc2024/ideas.md
  21. 2 2
      docs/gsoc2024/index.yml
  22. 6 0
      docs/gsoc2025/guide.md
  23. 6 0
      docs/gsoc2025/ideas.md
  24. 2 2
      docs/gsoc2025/index.yml
  25. 6 0
      docs/gsoc2026/guide.md
  26. 6 0
      docs/gsoc2026/ideas.md
  27. 2 2
      docs/gsoc2026/index.yml
  28. 56 59
      docs/index.md
  29. 86 3
      docs/modules/array2d.md
  30. 21 4
      docs/modules/base64.md
  31. 21 17
      docs/modules/bisect.md
  32. 29 4
      docs/modules/cmath.md
  33. 47 8
      docs/modules/collections.md
  34. 48 0
      docs/modules/console.md
  35. 38 5
      docs/modules/cute_png.md
  36. 30 6
      docs/modules/dataclasses.md
  37. 26 6
      docs/modules/datetime.md
  38. 35 33
      docs/modules/easing.md
  39. 16 7
      docs/modules/enum.md
  40. 40 10
      docs/modules/functools.md
  41. 36 3
      docs/modules/gc.md
  42. 24 16
      docs/modules/heapq.md
  43. 34 2
      docs/modules/importlib.md
  44. 79 0
      docs/modules/index.md
  45. 0 2
      docs/modules/index.yml
  46. 66 0
      docs/modules/inspection.md
  47. 32 10
      docs/modules/json.md
  48. 27 5
      docs/modules/lz4.md
  49. 45 131
      docs/modules/math.md
  50. 28 6
      docs/modules/msgpack.md
  51. 45 51
      docs/modules/operator.md
  52. 72 0
      docs/modules/os.md
  53. 35 4
      docs/modules/periphery.md
  54. 51 25
      docs/modules/pickle.md
  55. 42 3
      docs/modules/pkpy.md
  56. 43 43
      docs/modules/random.md
  57. 57 0
      docs/modules/stdc.md
  58. 34 25
      docs/modules/sys.md
  59. 32 6
      docs/modules/time.md
  60. 29 8
      docs/modules/traceback.md
  61. 25 3
      docs/modules/typing.md
  62. 26 8
      docs/modules/unicodedata.md
  63. 64 3
      docs/modules/vmath.md
  64. 52 150
      docs/performance.md
  65. 96 86
      docs/quick-start.md
  66. 6 4
      docs/retype.yml
  67. 0 4136
      include/pocketpy/common/_log_spline_tbl.h
  68. 4 0
      include/pocketpy/common/dmath.h
  69. 3 3
      scripts/gen_docs.py
  70. 21 7
      src/bindings/py_number.c

+ 9 - 2
CMakeLists.txt

@@ -18,6 +18,9 @@ endif()
 if(MSVC)
     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /utf-8 /jumptablerdata")
     add_compile_options(/wd4267 /wd4244 /wd4146 /wd4819 /experimental:c11atomics)
+    if(PK_ENABLE_DETERMINISM)
+        add_compile_options(/fp:strict)
+    endif()
 
     if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
         set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Ox")
@@ -41,7 +44,11 @@ else()
     endif()
 
     if(PK_ENABLE_DETERMINISM)
-        set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ffp-contract=off")
+        add_compile_options(-fno-fast-math -ffp-contract=off)
+        # x87's extended intermediates violate the binary64 kernel contract.
+        if(CMAKE_SIZEOF_VOID_P EQUAL 4 AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(i.86|x86|x86_64|AMD64)$")
+            add_compile_options(-msse2 -mfpmath=sse)
+        endif()
     endif()
 endif()
 
@@ -193,4 +200,4 @@ endif()
 
 if(PK_ENABLE_MIMALLOC)
     target_link_libraries(${PROJECT_NAME} mimalloc-static)
-endif()
+endif()

+ 3 - 0
docs/.gitignore

@@ -0,0 +1,3 @@
+.retype/
+.validation/
+retype.manifest

+ 127 - 0
docs/C-API/execution.md

@@ -0,0 +1,127 @@
+---
+title: Execution and Exceptions
+icon: dot
+order: 9
+---
+
+# Execution and exceptions
+
+## Execute statements or evaluate an expression
+
+| API | Input | Result on success |
+| --- | --- | --- |
+| `py_exec(source, filename, EXEC_MODE, module)` | Statements | `None` in `py_retval()` |
+| `py_exec(source, filename, EVAL_MODE, module)` | One expression | Expression value in `py_retval()` |
+| `py_eval(source, module)` | One expression | Shorthand using filename `<string>` |
+| `py_execo(data, size, filename, module)` | pocketpy bytecode | Result in `py_retval()`; see [deployment](../features/deploy.md) |
+
+Use a module reference to select the global namespace, or `NULL` for
+`__main__`. The filename is used for diagnostics; it does not change the
+working directory or the import search root.
+
+For a C value, prefer constructing a Python value to interpolating it into
+Python source. This avoids quoting problems and unnecessary parsing.
+
+## Call a Python function from C
+
+This complete program defines a Python function and calls it with two integers:
+
+```c
+#include "pocketpy.h"
+#include <inttypes.h>
+#include <stdio.h>
+
+int main(void) {
+    py_initialize();
+    py_StackRef base = py_peek(0);
+
+    if(!py_exec("def add(a, b):\n    return a + b\n",
+                "app.py", EXEC_MODE, NULL)) goto error;
+
+    py_Ref add = py_getglobal(py_name("add"));
+    if(add == NULL) {
+        py_exception(tp_NameError, "add is not defined");
+        goto error;
+    }
+
+    py_push(add);
+    py_pushnil();                         /* No bound self argument. */
+    py_newint(py_pushtmp(), 20);
+    py_newint(py_pushtmp(), 22);
+    if(!py_vectorcall(2, 0)) goto error;
+    if(!py_checkint(py_retval())) goto error;
+
+    printf("%" PRId64 "\n", py_toint(py_retval()));  /* 42 */
+    py_finalize();
+    return 0;
+
+error:
+    py_printexc();
+    py_clearexc(base);
+    py_finalize();
+    return 1;
+}
+```
+
+The call stack layout is:
+
+```text
+callable, self-or-nil, positional arguments..., keyword-name, keyword-value...
+```
+
+`py_vectorcall(argc, kwargc)` counts positional arguments excluding `self`,
+and counts keyword **pairs**. Push keyword names with `py_pushname()`.
+On success, the call consumes this layout and leaves the result in
+`py_retval()`. Do not pop those call arguments again.
+
+When arguments already occupy consecutive slots, `py_call(f, argc, argv)`
+prepares the call for you. Keep the callable and argument values rooted during
+the call; see [reference lifetimes](introduction.md#a-reference-points-to-a-value-slot).
+
+## Handle an exception at the host boundary
+
+An exception is stored in the VM until handled or cleared.
+`py_printexc()` prints it but **does not clear it**. If the host will continue
+running Python, save the stack boundary before the operation and restore it with
+`py_clearexc(base)` on failure.
+
+The following fragment runs inside an initialized host:
+
+```c
+py_StackRef base = py_peek(0);
+if(!py_exec("raise ValueError('invalid level')", "level.py", EXEC_MODE, NULL)) {
+    py_printexc();
+    py_clearexc(base);
+}
+
+bool ok = py_exec("print('Host recovered')", "app.py", EXEC_MODE, NULL);
+if(!ok) {
+    py_printexc();
+    py_clearexc(base);
+}
+```
+
+For a log string, use `py_formatexc()` and release the returned allocation with
+`py_free()`. A `NULL` result means no exception is set.
+
+A native callback normally propagates failures with `return false;`.
+Only clear the exception if your code actually handles the failure and can
+continue. Never return `false` without setting an exception, or return
+`true` while an exception is pending.
+
+## Return values are temporary
+
+Any operation marked `PY_RETURN` may overwrite `py_retval()`. Copy a result
+that must survive another call:
+
+```c
+/* After a successful operation that returned a Python value: */
+py_push(py_retval());
+py_StackRef saved = py_peek(-1);
+/* Other calls may now overwrite py_retval(); saved remains rooted. */
+py_setglobal(py_name("last_result"), saved);
+py_pop();
+```
+
+For long-lived application data, store the value in a module or a reachable
+Python container rather than leaving temporary stack entries indefinitely.

+ 2 - 2
docs/C-API/index.yml

@@ -1,3 +1,3 @@
-label: C-API
+label: C API
 icon: code
-order: 15
+order: 18

+ 99 - 37
docs/C-API/introduction.md

@@ -1,62 +1,124 @@
 ---
-title: Introduction
+title: C API Essentials
 icon: dot
 order: 10
 ---
 
-All public functions in the C API are prefixed with `py_` in [pocketpy.h](https://github.com/pocketpy/pocketpy/blob/main/include/pocketpy/pocketpy.h).
+# C API essentials
 
+Include `pocketpy.h` and initialize the runtime before calling the API.
+The [quick start](../quick-start.md) has a complete host program.
+Public declarations live in
+[pocketpy.h](https://github.com/pocketpy/pocketpy/blob/main/include/pocketpy/pocketpy.h);
+the [function reference](functions.md) is generated from that header.
 
-## Overview
+Read [execution and exceptions](execution.md) for calls and error handling,
+[module loading](modules.md) for imports, and [C bindings](../bindings.md) for
+native functions.
 
-pocketpy works with opaque references. `py_Ref` is used to reference objects in the virtual machine. It is your responsibility to ensure a reference is valid before using it. See following reference types:
+## A reference points to a value slot
+
+A `py_Ref` points to a slot containing a Python value. Copying the C pointer
+does **not** copy the value or keep its object alive. Use `py_assign(dst, src)`
+to copy a value into another valid slot. pocketpy uses garbage collection, so
+there is no public `Py_INCREF`/`Py_DECREF` protocol.
+
+The reference typedefs have the same C representation but document different
+lifetimes:
+
+| Type | Meaning and lifetime |
+| --- | --- |
+| `py_Ref` | Generic reference; the function returning it determines its lifetime. |
+| `py_GlobalRef` | VM-owned reference; invalid after VM reset or finalization. |
+| `py_StackRef` | Value-stack slot; valid while that slot remains on the stack. |
+| `py_ObjectRef` | Slot owned by an object; the owner must remain alive. |
+| `py_ItemRef` | Container item; reacquire it after modifying the container. |
+| `py_OutRef` | A caller-provided destination slot for an output value. |
+
+A local C variable containing a reference is not a garbage-collector root.
+Keep values in a VM register, on the value stack, or in a reachable Python
+container or module for as long as they are needed.
+
+## Registers and stack
+
+| Storage | Use |
+| --- | --- |
+| `py_r0()` ... `py_r7()` | Eight application registers. Shared with other native code using the same VM. |
+| `py_tmpr0()` ... `py_tmpr3()` | Scratch registers also used internally; do not keep values here across API calls. |
+| `py_retval()` | Return slot, overwritten by operations producing a result. |
+| `py_sysr0()`, `py_sysr1()` | Reserved for the debugger and C++ binding layer. |
+| `py_push()`, `py_pushtmp()` | Stack storage for values that must survive nested calls. |
+
+`py_peek(-1)` addresses the top value. `py_peek(0)` is the stack boundary,
+useful as a saved position for error recovery; it is not an initialized value.
+
+This fragment runs after initialization and creates a rooted list:
 
 ```c
-/// A generic reference to a python object.
-typedef py_TValue* py_Ref;
-/// A reference which has the same lifespan as the python object.
-typedef py_TValue* py_ObjectRef;
-/// A global reference which has the same lifespan as the VM.
-typedef py_TValue* py_GlobalRef;
-/// A specific location in the value stack of the VM.
-typedef py_TValue* py_StackRef;
-/// An item reference to a container object. It invalidates when the container is modified.
-typedef py_TValue* py_ItemRef;
-/// An output reference for returning a value.
-typedef py_TValue* py_OutRef;
+py_StackRef values = py_pushtmp();
+py_newlistn(values, 3);
+py_newint(py_list_getitem(values, 0), 10);
+py_newint(py_list_getitem(values, 1), 20);
+py_newint(py_list_getitem(values, 2), 30);
+
+py_setglobal(py_name("scores"), values);
+py_pop();  /* The __main__.scores global now keeps the list alive. */
 ```
 
-You can store python objects into "stack" or "register".
-We provide 8 registers and you can get references to them by `py_reg()`.
-Also, `py_retval()` is a special register that is used to store the return value of a `py_CFunction`.
-Registers are shared so they could be overwritten easily.
-If you want to store python objects across function calls, you should store them into the stack via `py_push()` and `py_pop()`.
+Initialize a slot returned by `py_pushtmp()` immediately. On successful return
+from a native function, pop every temporary you pushed. On failure, propagate
+the exception to the caller; the host's recovery boundary restores the stack.
+See [exception handling](execution.md#handle-an-exception-at-the-host-boundary).
 
-## Data Types
+## Convert values deliberately
 
-You can do conversions between C types and python objects using the following functions:
+| Python value | Create from C | Read in C |
+| --- | --- | --- |
+| `int` (signed 64-bit) | `py_newint(out, value)` | `py_toint(ref)` returning `py_i64` |
+| `float` (double) | `py_newfloat(out, value)` | `py_tofloat(ref)` |
+| `bool` | `py_newbool(out, value)` | `py_tobool(ref)` |
+| UTF-8 `str` | `py_newstr(out, text)`, `py_newstrv(out, view)` | `py_tostr(ref)`, `py_tosv(ref)` |
+| `bytes` | `py_newbytes(out, size)`, then fill the returned buffer | `py_tobytes(ref, &size)` |
+| `None` | `py_newnone(out)` | `py_isnone(ref)` |
 
-| C type              | Python type | C to Python     | Python to C                      |
-| ------------------- | ----------- | --------------- | -------------------------------- |
-| char,short,int,long | int         | `py_newint()`   | `py_toint()`                     |
-| float,double        | float       | `py_newfloat()` | `py_tofloat()`, `py_castfloat()` |
-| bool                | bool        | `py_newbool()`  | `py_tobool()`                    |
-| const char*         | str         | `py_newstr()`   | `py_tostr()`                     |
-| void*,intptr_t      | int         | `py_newint()`   | `(void*)py_toint()`              |
+The `py_to*` functions are low-level accessors, not general Python conversions.
+Check types first with `py_checktype()` or the `PY_CHECK_ARG_TYPE` macro.
+For a numeric input accepting either `int` or `float`, use
+`py_castfloat(ref, &value)` and check its boolean result. Range-check before
+narrowing a `py_i64` to a smaller C integer.
 
----
+String and byte pointers refer to interpreter-owned memory. Copy the data if it
+must outlive the owning object. Use `c11_sv` or an explicit byte length for data
+that may contain embedded NUL characters.
 
-### `PY_RAISE` macro
+## API annotations
 
-Mark a function that can raise an exception on failure.
+### `PY_RAISE` macro
 
-+ If the function returns `bool`, then `false` means an exception is raised.
-+ If the function returns `int`, then `-1` means an exception is raised.
+Marks an operation that can set a Python exception. A boolean return of `false`
+indicates failure; for integer-returning operations, `-1` indicates failure.
+Other integer values have function-specific meanings: for example,
+`py_import()` returns `0` for "not found" and `1` for success.
 
 ### `PY_RETURN` macro
 
-Mark a function that can store a value in `py_retval()` on success.
+Marks an operation whose successful result is written to `py_retval()`.
+Read or copy it before another operation overwrites it.
 
 ### `PY_MAYBENULL` macro
 
-Mark a variable or callback function that may be `NULL`.
+Marks a pointer or callback that may be `NULL`. Check the function's contract
+before dereferencing it.
+
+These macros document contracts; they do not perform checks themselves.
+
+## Runtime lifetime
+
+`py_initialize()` creates VM 0. Up to 16 VM slots exist, selected with
+`py_switchvm(index)`. A value belongs to its VM and must not be passed to
+another VM. Each VM can be used by only one thread at a time; see
+[compute threads](../features/threading.md).
+
+`py_resetvm()` discards the current VM's state, invalidating its references.
+`py_finalize()` destroys all VMs and is terminal for the process: the API must
+not be used afterward.

+ 117 - 0
docs/C-API/modules.md

@@ -0,0 +1,117 @@
+---
+title: Modules and Host Callbacks
+icon: dot
+order: 8
+---
+
+# Modules and host callbacks
+
+A module holds Python globals. Native modules created with `py_newmodule()`
+can be imported by scripts in the current VM, just like source modules.
+
+## Create or look up a module
+
+This fragment runs after initialization:
+
+```c
+py_GlobalRef settings = py_newmodule("settings");
+py_newint(py_emplacedict(settings, py_name("screen_width")), 1280);
+
+bool ok = py_exec("import settings\nprint(settings.screen_width)",
+                  "app.py", EXEC_MODE, NULL);
+if(!ok) py_printexc();
+```
+
+Create a module only once per VM: recreating an existing name is an error at the
+native API level. `py_getmodule("settings")` looks up an already registered
+module and returns `NULL` if it is absent; it does not perform an import.
+
+`py_import(name)` attempts to load a module and returns:
+
+| Return | Meaning |
+| --- | --- |
+| `1` | Success; the module is in `py_retval()`. |
+| `0` | The module was not found; the caller decides how to report this. |
+| `-1` | Loading failed with a Python exception. |
+
+Do not treat `py_import()` as a boolean: `-1` is true in a C condition.
+
+## Where imports come from
+
+The importer first checks registered modules, then the host's optional
+`lazyimport` callback, then bundled Python modules. For a file-based module
+such as `game.level`, it asks `importfile` for these paths in order:
+
+1. `game/level.py`
+2. `game/level.pyc`
+3. `game/level/__init__.py`
+4. `game/level/__init__.pyc`
+
+Path separators follow the platform. Parent packages are loaded first.
+Supported desktop builds may then try a native dynamic module if enabled.
+
+The default file callback opens paths relative to the **process working
+directory**. Running `main scripts/app.py` does not automatically add
+`scripts/` to an import path. Start the host in the intended script directory
+or provide your own loader. pocketpy does not provide CPython's `sys.path`
+search mechanism.
+
+When both source and bytecode exist, source is preferred.
+See [bytecode deployment](../features/deploy.md) for the distribution format.
+
+## Load a module from memory
+
+Replace `py_callbacks()->importfile` to load scripts from a game asset bundle,
+a virtual filesystem, or embedded strings. This complete example provides one
+module without reading a file:
+
+```c
+#include "pocketpy.h"
+#include <string.h>
+
+static char* import_source(const char* path, int* data_size) {
+    if(strcmp(path, "settings.py") != 0) return NULL;
+
+    const char* source = "screen_width = 1280\n";
+    size_t size = strlen(source);
+    char* buffer = py_malloc(size + 1);
+    memcpy(buffer, source, size + 1);
+    if(data_size != NULL) *data_size = (int)size;
+    return buffer;
+}
+
+int main(void) {
+    py_initialize();
+    py_callbacks()->importfile = import_source;
+
+    bool ok = py_exec("import settings\nassert settings.screen_width == 1280",
+                      "app.py", EXEC_MODE, NULL);
+    if(!ok) py_printexc();
+
+    py_finalize();
+    return ok ? 0 : 1;
+}
+```
+
+The loader contract matters:
+
+- Return `NULL` when the requested path is unavailable.
+- Allocate a fresh buffer with `py_malloc()`; the interpreter owns and frees it.
+  Do not return a string literal, stack buffer, or shared asset pointer.
+- NUL-terminate source text. For bytecode, report the exact byte length.
+- Check whether `data_size` is `NULL`: source reloads can omit this output.
+- Handle every path variant that your application supports.
+
+Callbacks belong to the current VM. Configure each VM that needs a custom
+loader, and configure it again after a reset.
+
+## Redirect script output
+
+`py_callbacks()->print` receives NUL-terminated UTF-8 text.
+A single Python `print()` can call it more than once; do not assume each
+callback contains a whole line. Set `flush` if your output backend buffers
+data. `py_printexc()` also uses this output callback.
+
+The `getchr` callback supplies input for `input()`. More specialized hooks,
+including `gc_mark` and `displayhook`, are declared in
+[the public header](https://github.com/pocketpy/pocketpy/blob/main/include/pocketpy/pocketpy.h).

+ 116 - 252
docs/bindings-cpp.md

@@ -1,292 +1,156 @@
 ---
 icon: cpu
-title: Write C++ Bindings
-order: 17
+title: C++ Bindings
+order: 16
 ---
 
-## Quick Start
+# C++ bindings
 
-pkpy provides a [pybind11](https://pybind11.readthedocs.io/en/stable/) compatible layer which allows users to do convenient bindings.
-Header files are located in the `include/pybind11` directory. Make sure you have added `-Iinclude` to your compiler flags.
+pocketpy bundles a **C++17 binding layer with a pybind11-style API** in
+`include/pybind11/`. Use these headers with the pocketpy library.
+It implements a subset of pybind11 and does not use CPython's extension ABI.
 
-To begin with, use `py::scoped_interpreter guard{}` to start the interpreter before using any Python objects.
-Or explicitly call `py::interpreter::initialize()` and `py::interpreter::finalize()`.
+## A complete embedded module
 
-### module
+Save this as `main.cpp`. Link it to the `pocketpy` CMake target as in
+[quick start](quick-start.md), and set
+`target_compile_features(my_app PRIVATE cxx_std_17)`.
 
 ```cpp
-#include <pybind11/pybind11.h>
-namespace py = pybind11;
-
-PYBIND11_EMBEDDED_MODULE(example, m) {
-    m.def("add", [](int a, int b) {
-        return a + b;
-    });
-
-    auto math = m.def_submodule("math");
-}
-```
-
-### function
-
-```cpp
-int add(int a, int b) { return a + b; }
-
-int add(int a, int b, int c) { return a + b + c; }
-
-void register_function(py::module_& m)
-{
-    m.def("add", py::overload_cast<int, int>(&add));
-
-    // support function overload
-    m.def("add", py::overload_cast<int, int, int>(&add));
-
-    // bind with default arguments
-    m.def("sub", [](int a, int b) { 
-        return a - b; 
-    }, py::arg("a") = 1, py::arg("b") = 2);
-
-    // bind *args
-    m.def("add", [](py::args args) {
-        int sum = 0;
-        for (auto& arg : args) {
-            sum += arg.cast<int>();
-        }
-        return sum;
-    });
-
-    // bind **kwargs
-    m.def("add", [](py::kwargs kwargs) {
-        int sum = 0;
-        for (auto item : kwargs) {
-            sum += item.second.cast<int>();
-        }
-        return sum;
-    });
-}
-```
-
-### class
-
-```cpp
-struct Point
-{
-    const int x;
-    int y;
+#include <pybind11/embed.h>
+#include <iostream>
 
-public:
-    Point() : x(0), y(0) {}
-
-    Point(int x, int y) : x(x), y(y) {}
+namespace py = pybind11;
 
-    Point(const Point& p) : x(p.x), y(p.y) {}
+struct Point {
+    double x;
+    double y;
 
-    std::string stringfy() const { 
-        return "(" + std::to_string(x) + ", " + std::to_string(y) + ")"; 
-    }
+    Point(double x, double y) : x(x), y(y) {}
+    double squared_length() const { return x * x + y * y; }
 };
 
-struct Point3D : Point
-{
-private:
-    int z;
-
-public:
-    Point3D(int x, int y, int z) : Point(x, y), z(z) {}
-
-    int get_z() const { return z; }
-
-    void set_z(int z) { this->z = z; }
-};
+PYBIND11_EMBEDDED_MODULE(example, m) {
+    m.def("scale", [](double value, double factor) {
+        return value * factor;
+    }, py::arg("value"), py::arg("factor") = 2.0);
 
-void bind_class(py::module_& m)
-{
     py::class_<Point>(m, "Point")
-        .def(py::init<>())
-        .def(py::init<int, int>())
-        .def(py::init<const Point&>())
-        .def_readonly("x", &Point::x)
+        .def(py::init<double, double>())
+        .def_readwrite("x", &Point::x)
         .def_readwrite("y", &Point::y)
-        .def("__str__", &Point::stringfy);
-
-    // only support single inheritance
-    py::class_<Point3D, Point>(m, "Point3D", py::dynamic_attr())
-        .def(py::init<int, int, int>())
-        .def_property("z", &Point3D::get_z, &Point3D::set_z);
+        .def("squared_length", &Point::squared_length);
+}
 
-    // dynamic_attr will enable the dict of bound class
+int main() {
+    py::scoped_interpreter guard{};
+    try {
+        py::exec(R"(
+from example import Point, scale
+point = Point(3.0, 4.0)
+assert point.squared_length() == 25.0
+assert scale(3.0) == 6.0
+assert scale(3.0, factor=4.0) == 12.0
+)");
+    } catch(const py::python_error& error) {
+        std::cerr << error.what() << '\n';
+        return 1;
+    }
+    return 0;
 }
 ```
 
-### operators
+The module macro registers initialization code that runs when the interpreter
+starts. Create the guard before any Python object and destroy all Python
+objects before the guard. Use one interpreter lifetime per process.
 
-```cpp
-#include <pybind11/operators.h>
-namespace py = pybind11;
+The explicit lifecycle functions are `py::initialize()` and
+`py::finalize()`. If using the binding layer, initialize through this layer
+so that embedded-module registrations are run.
 
-struct Int {
-    int value;
+## Functions and overloads
 
-    Int(int value) : value(value) {}
+Use function pointers or lambdas with `m.def()`. Register argument defaults
+with `py::arg`; C++ default arguments alone do not provide Python defaults.
 
-    Int operator+(const Int& other) const {
-        return Int(value + other.value);
-    }
-
-    Int operator-(const Int& other) const {
-        return Int(value - other.value);
-    }
-
-    bool operator==(const Int& other) const {
-        return value == other.value;
-    }
+For an overloaded C++ function, select the overload explicitly:
 
-    bool operator!=(const Int& other) const {
-        return value != other.value;
-    }
-};
+```cpp
+int add(int a, int b) { return a + b; }
+double add(double a, double b) { return a + b; }
 
-void bind_operators(py::module_& m)
-{
-    py::class_<Int>(m, "Int")
-        .def(py::init<int>())
-        .def(py::self + py::self)
-        .def(py::self - py::self)
-        .def(py::self == py::self)
-        .def(py::self != py::self);
-        // other operators are similar
+void bind_add(py::module_& m) {
+    m.def("add", py::overload_cast<int, int>(&add));
+    m.def("add", py::overload_cast<double, double>(&add));
 }
 ```
 
-### py::object
+The example assumes values whose integer sum fits in C++ `int`.
+For variable arguments, accept `py::args` or `py::kwargs`.
+The repository's
+[function tests](https://github.com/pocketpy/pocketpy/blob/main/include/pybind11/tests/function.cpp)
+show supported combinations.
 
-`py::object` is just simple wrapper around `PyVar`. It supports some convenient methods to interact with Python objects.
+## Classes and properties
 
+| Binding | Purpose |
+| --- | --- |
+| `.def(py::init<Args...>())` | Expose a constructor. |
+| `.def("name", &T::method)` | Expose an instance method. |
+| `.def_readwrite("name", &T::field)` | Read/write field. |
+| `.def_readonly("name", &T::field)` | Read-only field. |
+| `.def_property("name", getter, setter)` | Computed property. |
+| `py::class_<Derived, Base>` | Register single inheritance. |
+| `py::dynamic_attr()` | Allow additional Python attributes on an instance. |
 
-here are some common methods:
+Use `<pybind11/operators.h>` for bindings such as
+`.def(py::self + py::self)`. The operator must also be supported by
+[pocketpy's object model](features/basic.md#special-methods).
 
-```cpp
-obj.attr("x"); // access attribute
-obj[1]; // access item
-
-obj.is_none(); // same as obj is None in Python
-obj.is(obj2); // same as obj is obj2 in Python
-
-// operators
-obj + obj2; // same as obj + obj2 in Python
-// ...
-obj == obj2; // same as obj == obj2 in Python
-// ...
+For pointer and reference results, choose the return-value policy to match
+ownership. `reference` leaves ownership with C++; `take_ownership` transfers
+it to the Python wrapper; `reference_internal` associates the result with its
+parent. Never return a reference to a local C++ variable.
 
-obj(...); // same as obj.__call__(...)
+## Work with Python values
 
-py::cast(obj); // cast to Python object
-obj.cast<T>; // cast to C++ type
-
-py::type::of(obj); // get type of obj
-py::type::of<T>(); // get type of T, if T is registered
-```
-
-you can also create some builtin objects with their according wrappers:
+This fragment runs while a `py::scoped_interpreter` is alive:
 
 ```cpp
-py::bool_ b = {true};
-py::int_ i = {1};
-py::float_ f = {1.0};
-py::str s = {"hello"};
-py::list l = {1, 2, 3};
-py::tuple t = {1, 2, 3};
-// ...
+py::object result = py::eval("sum([1, 2, 3])");
+int total = result.cast<int>();               // 6
+py::object math = py::module_::import("math");
+double root = math.attr("sqrt")(9.0).cast<double>();  // 3.0
+py::list values;
+values.append(py::int_(1));
+values.append(py::int_(2));
 ```
 
-
-
-## More Examples
-
-More examples please see the test [folder](https://github.com/pocketpy/gsoc-2024-dev/tree/main/pybind11/tests) in the GSoC repository. All tested features are supported.
-
-## Limits and Comparison
-
-This is a feature list of pybind11 for pocketpy. It lists all completed and pending features. It also lists the features that cannot be implemented in the current version of pocketpy.
-
-### [Function](https://pybind11.readthedocs.io/en/stable/advanced/functions.html)
-
-- [x] Function overloading
-- [x] Return value policy
-- [x] is_prepend
-- [x] `*args` and `**kwargs`
-- [ ] Keep-alive
-- [ ] Call Guard
-- [x] Default arguments
-- [ ] Keyword-Only arguments
-- [ ] Positional-Only arguments
-- [ ] Allow/Prohibiting None arguments
-
-### [Class](https://pybind11.readthedocs.io/en/stable/classes.html)
-
-- [x] Creating bindings for a custom type
-- [x] Binding lambda functions
-- [x] Dynamic attributes
-- [x] Inheritance and automatic downcasting
-- [x] Enumerations and internal types
-- [ ] Instance and static fields
-
-> Binding static fields may never be implemented in pocketpy because it requires a metaclass, which is a heavy and infrequently used feature.
-
-### [Exceptions](https://pybind11.readthedocs.io/en/stable/advanced/exceptions.html)
-
-Need further discussion.
-
-### [Smart pointers](https://pybind11.readthedocs.io/en/stable/advanced/smart_ptrs.html)
-
-- [ ] std::shared_ptr
-- [ ] std::unique_ptr
-- [ ] Custom smart pointers
-
-### [Type conversions](https://pybind11.readthedocs.io/en/stable/advanced/cast/index.html)
-
-- [x] Python built-in types
-- [x] STL Containers
-- [ ] Functional
-- [ ] Chrono
-
-### [Python C++ interface](https://pybind11.readthedocs.io/en/stable/advanced/pycpp/object.html)
-
-Need further discussion.
-
-- [x] `object`
-- [x] `none`
-- [x] `type`
-- [x] `bool_`
-- [x] `int_`
-- [x] `float_`
-- [x] `str`
-- [ ] `bytes`
-- [ ] `bytearray`
-- [x] `tuple`
-- [x] `list`
-- [ ] `set`
-- [x] `dict`
-- [ ] `slice`
-- [x] `iterable`
-- [x] `iterator`
-- [ ] `function`
-- [ ] `buffer`
-- [ ] `memoryview`
-- [x] `capsule`
-
-### [Miscellaneous](https://pybind11.readthedocs.io/en/stable/advanced/misc.html)
-
-- [ ] Global Interpreter Lock (GIL)
-- [ ] Binding sequence data types, iterators, the slicing protocol, etc.
-- [x] Convenient operators binding
-
-### Differences between CPython and pocketpy
-
-- only `add`, `sub` and `mul` have corresponding right versions in pocketpy. So if you bind `int() >> py::self`, it will has no effect in pocketpy.
-
-- `__new__` and `__del__` are not supported in pocketpy.
-
-- in-place operators, such as `+=`, `-=`, `*=`, etc., are not supported in pocketpy.
-
-- the return value of `globals` is immutable in pocketpy.
+Use `obj.attr("name")` for attributes, `obj[key]` for items,
+`obj(...)` for calls, `obj.cast<T>()` to convert to C++, and
+`py::cast(value)` to construct a Python value from C++.
+`py::object` manages a rooted handle; a plain `py::handle` does not own one.
+
+Include `<pybind11/stl.h>` for supported STL container conversions, including
+vectors and maps. These conversions copy container contents; they are not
+shared views into the C++ container.
+
+## Compatibility boundaries
+
+The bundled headers and
+[tests](https://github.com/pocketpy/pocketpy/tree/main/include/pybind11/tests)
+are the reference for supported features. In particular:
+
+- Multiple inheritance, CPython's buffer protocol, and GIL APIs are unavailable.
+- The bundled conversion layer does not provide the full upstream smart-pointer,
+  NumPy, chrono, or callable conversion ecosystem.
+- Python syntax and behavior follow the [pocketpy compatibility guide](features/differences.md),
+  including positional argument rules and in-place special-method limitations.
+- The binding layer maintains process-wide object-pool and type-registration
+  state. Do not assume its handles can be shared across VMs or used concurrently.
+
+Calls such as `py::exec()` translate a Python failure to `py::python_error`,
+whose `what()` contains the traceback. Other binding operations can use
+`py::error_already_set` to signal a pending VM exception. Follow the
+[exception tests](https://github.com/pocketpy/pocketpy/blob/main/include/pybind11/tests/error.cpp)
+when adding custom exception handling.

+ 92 - 44
docs/bindings.md

@@ -1,68 +1,116 @@
 ---
 icon: cpu
-title: Write C Bindings
-order: 18
+title: C Bindings
+order: 17
 ---
 
-In order to use a C/C++ library in python, you need to write bindings for it.
+# C bindings
 
-pkpy uses an universal signature to wrap a C function pointer as a python function or method, i.e `py_CFunction`.
+A binding converts Python arguments to native values, calls your C code, and
+writes a Python result. All native functions use the `py_CFunction` signature:
 
 ```c
-typedef bool (*py_CFunction)(int argc, py_Ref argv);
+typedef bool (*py_CFunction)(int argc, py_StackRef argv);
 ```
-+ `argc` is the number of arguments passed to the function.
-+ `argv` is the pointer to the first argument.
 
-If successful, the function should return `true` and set the return value in `py_retval()`. In case there is no return value, you should use `py_newnone(py_retval())`.
-If an error occurs, the function should raise an exception and return `false`.
+`argc` is the argument count and `py_arg(i)` accesses argument `i`.
+The parameter names `argc` and `argv` are required by the convenience macros.
 
-## Steps
+## A complete binding
 
-Say you have a function `add` that takes two integers and returns their sum.
-```c
-int add(int a, int b) {
-    return a + b;
-}
-```
+This program exports `native.add(a, b=1)`:
 
-Here is how you can write the binding for it:
 ```c
-// 1. Define a wrapper function with the signature `py_CFunction`.
-bool py_add(int argc, py_Ref argv) {
-    // 2. Check the number of arguments.
+#include "pocketpy.h"
+#include <stdint.h>
+
+static bool native_add(int argc, py_Ref argv) {
     PY_CHECK_ARGC(2);
-    // 3. Check the type of arguments.
     PY_CHECK_ARG_TYPE(0, tp_int);
     PY_CHECK_ARG_TYPE(1, tp_int);
-    // 4. Convert the arguments into C types.
-    int _0 = py_toint(py_arg(0));
-    int _1 = py_toint(py_arg(1));
-    // 5. Call the original function.
-    int res = add(_0, _1);
-    // 6. Set the return value.
-    py_newint(py_retval(), res);
-    // 7. Return `true`.
+
+    py_i64 a = py_toint(py_arg(0));
+    py_i64 b = py_toint(py_arg(1));
+    if((b > 0 && a > INT64_MAX - b) || (b < 0 && a < INT64_MIN - b)) {
+        return ValueError("sum is outside the signed 64-bit range");
+    }
+
+    py_newint(py_retval(), a + b);
     return true;
 }
-```
 
-Once you have the wrapper function, you can bind it to a python module via `py_bindfunc`.
-```c
-py_GlobalRef mod = py_getmodule("__main__");
-py_bindfunc(mod, "add", py_add);
+int main(void) {
+    py_initialize();
+
+    py_GlobalRef mod = py_newmodule("native");
+    py_bind(mod, "add(a, b=1)", native_add);
+
+    bool ok = py_exec("from native import add\n"
+                      "assert add(3, 7) == 10\n"
+                      "assert add(4) == 5\n"
+                      "assert add(4, b=2) == 6\n",
+                      "app.py", EXEC_MODE, NULL);
+    if(!ok) py_printexc();
+
+    py_finalize();
+    return ok ? 0 : 1;
+}
 ```
 
-Alternatively, you can use `py_bind` with a signature, which allows you to specify some default values.
+The signature passed to `py_bind()` resolves defaults before the callback
+runs, so the callback receives two arguments even for `add(4)`.
+Required parameters such as `a` are positional in pocketpy; see
+[argument compatibility](features/differences.md#function-arguments).
+
+Use `py_i64` for Python integers and validate the native library's accepted
+range before narrowing to `int` or another smaller type. The example checks
+addition overflow to avoid undefined C arithmetic.
+
+## Choose a binding helper
+
+| Helper | Use |
+| --- | --- |
+| `py_bind(obj, "name(args...)", callback)` | Signature-based binding with names and defaults. |
+| `py_bindfunc(module, "name", callback)` | Simple positional-argument function; the callback validates the count. |
+| `py_bindmethod(type, "name", callback)` | Instance method; `self` is argument 0 and included in `argc`. |
+| `py_bindstaticmethod(type, "name", callback)` | Method without an implicit `self`. |
+| `py_bindproperty(type, "name", getter, setter)` | Property; a `NULL` setter makes it read-only. |
+| `py_bindmagic(type, py_name("__len__"), callback)` | Special method on a native type. |
+
+For a global function, bind to `py_getmodule("__main__")`. For a reusable API,
+create a named module.
+
+## Results and errors
+
+On success, write a value to `py_retval()` and return `true`. A function with
+no meaningful result must still call `py_newnone(py_retval())`.
+
+On failure, set an exception and return `false`. For example:
+
 ```c
-py_GlobalRef mod = py_getmodule("__main__");
-py_bind(mod, "add(a, b=1)", py_add);
+static bool require_positive(int argc, py_Ref argv) {
+    PY_CHECK_ARGC(1);
+    PY_CHECK_ARG_TYPE(0, tp_int);
+    if(py_toint(py_arg(0)) <= 0) return ValueError("value must be positive");
+    py_newnone(py_retval());
+    return true;
+}
 ```
 
-See also:
-+ [`py_bind`](/c-api/functions/#py_bind)
-+ [`py_bindmethod`](/c-api/functions/#py_bindmethod)
-+ [`py_bindfunc`](/c-api/functions/#py_bindfunc)
-+ [`py_bindproperty`](/c-api/functions/#py_bindproperty)
-+ [`py_newmodule`](/c-api/functions/#py_newmodule)
-+ [`py_newtype`](/c-api/functions/#py_newtype)
+Type-check macros return immediately when validation fails. If an API you call
+fails, propagate its error rather than replacing it with a generic exception.
+See [execution and exceptions](C-API/execution.md) for the host's recovery path.
+
+## Native object lifetimes
+
+`py_newtype()` registers a Python type. `py_newobject()` allocates an instance
+with native userdata and optional Python slots or an attribute dictionary.
+
+Store references to Python objects in Python slots or another GC-visible
+container. A raw pointer inside userdata is not automatically a GC root.
+Keep a native resource alive for as long as a bound object can access it, and
+use the type's destructor callback to release native allocations.
+
+For class-heavy C++ libraries, the [C++ binding layer](bindings-cpp.md) handles
+much of this plumbing. The [function reference](C-API/functions.md) documents
+the lower-level type, slot, and binding operations.

+ 90 - 0
docs/build.md

@@ -0,0 +1,90 @@
+---
+icon: tools
+order: 19
+label: Build Configuration
+---
+
+# Build configuration
+
+[Quick start](quick-start.md) covers the default build. This page explains the
+options that change what the interpreter can do.
+
+## CMake options
+
+Pass options when configuring the build:
+
+```sh
+cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DPK_BUILD_STATIC_MAIN=ON -DPK_BUILD_MODULE_LZ4=ON
+cmake --build build --config Release
+```
+
+When embedding with `add_subdirectory(pocketpy)`, set cache options **before**
+adding the subdirectory, or pass them on the CMake command line.
+
+| Option | Default | Effect |
+| --- | --- | --- |
+| `PK_BUILD_SHARED_LIB` | `OFF` | Build only the shared library. |
+| `PK_BUILD_STATIC_LIB` | `OFF` at the repository root; `ON` as a dependency | Build only the static library. |
+| `PK_BUILD_STATIC_MAIN` | `OFF` | Link the standalone executable statically when neither library-only option is selected. |
+| `PK_BUILD_WITH_UNITY` | `ON` | Combine interpreter sources into a unity build. |
+| `PK_ENABLE_OS` | `ON` | Enable host OS facilities, including file access and the default debugger transport. |
+| `PK_ENABLE_THREADS` | `ON` | Enable thread support and `pkpy.ComputeThread`. |
+| `PK_ENABLE_DLL` | `ON` | Enable native dynamic-module loading on supported desktop platforms. |
+| `PK_ENABLE_DETERMINISM` | `ON` | Use the project's deterministic math implementation. |
+| `PK_ENABLE_WATCHDOG` | `OFF` | Enable execution timeout checks. |
+| `PK_ENABLE_CUSTOM_SNAME` | `OFF` | Omit the built-in name implementation; an advanced host integration must supply its own. |
+| `PK_ENABLE_MIMALLOC` | `OFF` | Fetch and use mimalloc instead of the default allocator. |
+
+Select at most one library-only option. With both off, the root build creates
+the standalone `main` executable and a library.
+
+The following modules are optional and default to `OFF`:
+
+| Option | Module |
+| --- | --- |
+| `PK_BUILD_MODULE_LZ4` | [lz4](modules/lz4.md) |
+| `PK_BUILD_MODULE_CUTE_PNG` | [cute_png](modules/cute_png.md) |
+| `PK_BUILD_MODULE_MSGPACK` | [msgpack](modules/msgpack.md) |
+| `PK_BUILD_MODULE_PERIPHERY` | [periphery](modules/periphery.md), for Linux hardware I/O |
+
+Initialize the required Git submodules before enabling a module that uses them:
+
+```sh
+git submodule update --init --recursive
+```
+
+The exact options are defined in
+[CMakeOptions.txt](https://github.com/pocketpy/pocketpy/blob/main/CMakeOptions.txt).
+
+## Compiling without the project CMake target
+
+Compile the interpreter as C11, even when your application uses C++. Use an
+optimized build with `NDEBUG` for deployment. For MSVC, include `/utf-8` and
+`/experimental:c11atomics`.
+
+The defaults in
+[config.h](https://github.com/pocketpy/pocketpy/blob/main/include/pocketpy/config.h)
+differ from CMake: `PK_ENABLE_THREADS`, `PK_ENABLE_DLL`, and
+`PK_ENABLE_DETERMINISM` default to `0` unless explicitly enabled.
+Do not assume a manually compiled interpreter has the same features as a CMake
+build.
+
+Match the platform libraries and feature definitions in
+[CMakeLists.txt](https://github.com/pocketpy/pocketpy/blob/main/CMakeLists.txt).
+For example, Windows uses `ws2_32`; enabled thread support needs the platform
+thread library, and supported Unix dynamic loading uses `dl`.
+Optional modules also need their native sources and libraries; defining a
+module macro alone is insufficient.
+
+## Inspect the running build
+
+```python
+import pkpy
+
+print(pkpy.configmacros)
+print(pkpy.currentvm())  # 0 in the default VM
+```
+
+This is useful when a script runs on the desktop but a module or feature is
+unavailable in an embedded or browser build. Disabling OS access reduces the
+exposed facilities; it does not turn the interpreter into a security sandbox.

+ 45 - 197
docs/coding-style-guide.md

@@ -1,221 +1,69 @@
 ---
 icon: book
 order: -5
-label: Coding Style Guide
+label: Script Style
 ---
 
-## Indentation
+# Script style
 
-Use four spaces for indentation. Do not use `TAB`.
+These conventions keep pocketpy examples readable and make scripts easier to
+share with Python users. Runtime restrictions belong in the
+[compatibility guide](features/differences.md); style preferences do not change
+language behavior.
 
-## Strings
+## Layout and names
 
-```python
-# Prefer single quotes for strings
-s = 'this is a string'
-
-# Use double quotes only if the string itself contains a single quote
-s = "this ' is single quote"
-```
-
-## Docstrings
-
-Always use triple quotes for docstrings.
-
-```python
-def f():
-    """This is a multi-line docstring.
-
-    Here is some content. Docstrings partially support Markdown.
-    """
-
-def g():
-    """This is a single-line docstring."""
-```
-
-Use natural language to describe the function's purpose. Do not enumerate each parameter and return value.
-
-```python
-# Correct
-def add(a: int, b: int):
-    """Add two integers `a` and `b`."""
-
-# Incorrect
-def add(a: int, b: int):
-    """
-    @param a, the first argument
-    @param b, the second argument
-    @return, the result of a + b
-    """
-```
-
-## Spaces
-
-```python
-# Add a space after `,` or `:`
-a, b = 1, 2
-c = [1, 2, 3]
-d = {'key': 'value'}
-
-# Spaces may be added around operators
-res = 1 + 2
-if res < 2: pass
-# Spaces can also be selectively added to indicate operator precedence
-x = x * 2 - 1
-hypot2 = x * x + y * y
-c = (a + b) * (a - b)
-
-# Add a space after `:` in type annotations
-def f(a: int, b: float): ...
-def g() -> int: ...
-
-# Add spaces around `=` when specifying default values in function parameters
-def f(a: int = 1, b: int | None = None): ...
-# However, omit spaces if the parameter has no type annotation
-def f(a=1, b=2): pass
-
-# Do not add spaces in keyword arguments when calling functions
-print(1, 2, 3, end='', sep=',')
-f(a=10, b=20)
-```
-
-## Naming Conventions
-
-+ Classes: `CapitalizedWords`
-+ Functions and variables: `lower_case_with_underscores`
-+ Constants and enums: `UPPER_CASE_WITH_UNDERSCORES` or `CapitalizedWords`
-+ Anonymous ordered variables: `_0`, `_1`, `_2`
-+ Discarded variables: `_`
-+ Some standard library functions: `lowercase`
-
-Here are some commonly used naming conventions:
-+ `self`: The first parameter of an instance method
-+ `cls`: The first parameter of class methods and `__new__`
-
-### Using Abbreviations
-
-Use abbreviations only for temporary variables and internal implementations.
-
-Abbreviations should be well-established, include key syllables of the original word, and be immediately recognizable.
-
-* `context` -> `ctx` (✔)
-* `temporary` -> `tmp` (✔)
-* `distribution` -> `dist` (✔)
-* `visited` -> `vis` (❌)
-
-```python
-# Incorrect: Using abbreviations in public function parameters
-def some_pub_fn(ctx, req_id, data):
-    pass
-
-# Correct
-def some_public_function(context, request_id, data):
-    pass
-```
+- Use four spaces for indentation and avoid tabs.
+- Use `CapitalizedWords` for classes, `lower_case_with_underscores` for
+  functions and variables, and `UPPER_CASE` for constants.
+- Give public parameters descriptive names. Short names such as `i` or
+  `x` are appropriate when their meaning is clear locally.
+- Avoid shadowing built-ins such as `list`, `type`, and `map`.
+- Prefix internal helpers with a single underscore. Reserve special
+  `__name__` forms for the runtime protocols they implement.
 
-### Using Precise Terminology
+## Functions and comments
 
-Naming should convey precise meanings, especially when multiple synonyms exist.
-
-For example, `count`, `size`, and `length` all relate to quantity, but they have different nuances:
-
-+ `count`: Represents a counted value
-+ `length`: Represents the number of elements in a container
-+ `size`: Represents the byte size of an object
+Use type annotations where they clarify an interface. Keep docstrings short:
+state what the function does and describe non-obvious constraints or effects.
+Explain why a step exists instead of narrating obvious operations.
 
 ```python
-s = 'aaabc⭐'
-count = s.count('a')
-length = len(s)
-size = len(s.encode())
+def clamp(value: float, minimum: float = 0.0, maximum: float = 1.0) -> float:
+    """Limit a value to the inclusive interval [minimum, maximum]."""
+    if minimum > maximum:
+        raise ValueError('minimum must not exceed maximum')
+    return min(max(value, minimum), maximum)
 
-print(f"{s!r} has a length of {length}, a size of {size} bytes, and contains {count} occurrences of 'a'")
-# 'aaabc⭐' has a length of 6, a size of 8 bytes, and contains 3 occurrences of 'a'
+assert clamp(1.5) == 1.0
 ```
 
-### Using Professional Terminology
+Put spaces after commas and around binary operators. For parameters with type
+annotations, use spaces around the default `=`; for calls, write
+`clamp(0.5, maximum=0.8)`.
 
-+ For item quantities in a game: `quantity` is better than `item_count`
-+ For grid counts: `area` (meaning surface area) is better than `grid_count`
+Choose either string quote style consistently, switching when that avoids
+escaping. Use triple-quoted docstrings.
 
-### Avoiding Built-in Names
-
-```python
-# Incorrect: Overwriting `builtins.map`
-map = [[1, 2, 3], [4, 5, 6]]
-# Incorrect: Overwriting `builtins.type`
-type = some_thing.type
-```
+## Imports and conditions
 
-### Internal Functions and Classes
+Group imports by standard modules, optional/native dependencies, then your
+application modules. Prefer explicit imports over wildcard imports.
 
-Use a single underscore `_` as a prefix for internal functions. Never use a double underscore `__` (except for magic methods).
+Use `is None`/`is not None` for the absence of a value.
+Use direct truth tests for booleans and empty containers:
 
 ```python
-def _internal_func():
-    """This is an internal function."""
+items = [1, 2, 3]
+value = None
 
-class _InternalClass:
-    def _internal_f(self): pass
+if items:
+    print(len(items))
+if value is None:
+    value = 0
 ```
 
-## Importing Modules
-
-1. Import standard library modules first.
-2. Then import third-party dependencies.
-3. Finally, import project-specific modules.
-
-```python
-from typing import Any
-from collections import deque
-
-from array2d import array2d
-
-from ..utils import logger
-```
-
-## Coding Practices
-
-Use `is not` when checking for `None`. Do not explicitly compare with `True` or `False`.
-
-```python
-# Correct
-if x is not None: pass
-
-# Incorrect
-if x != None: pass
-
-# Correct
-x = True
-if x: pass
-if not x: pass
-
-# Incorrect
-if x == True: pass
-if x is True: pass
-if x != False: pass
-```
-
-The `if` statement implicitly calls `bool()`, so it can be used to check if a container is empty.
-
-```python
-not_empty_list = [1]
-not_empty_string = '1'
-truth = True
-
-if not_empty_list:
-    print('true value')
-
-if not_empty_string:
-    print('true value')
-
-if truth:
-    print('true value')
-
-# Explicitly checking for emptiness is also valid
-if len(not_empty_list) > 0: pass
-```
-
-## References
-
-[PEP 8 – Style Guide for Python Code](https://peps.python.org/pep-0008/)
+Keep resource ownership visible. Explicit cleanup may be necessary because of
+pocketpy's [context manager behavior](features/differences.md#context-managers).
+For native contribution conventions, consult the repository's
+[contribution guide](https://github.com/pocketpy/pocketpy/blob/main/CONTRIBUTING.md).

+ 65 - 72
docs/features/basic.md

@@ -1,89 +1,82 @@
 ---
 icon: dot
-title: Basic Features
+title: Language Features
 order: 100
 ---
 
-The following table shows the basic features of pkpy with respect to [cpython](https://github.com/python/cpython).
+# Language features
 
-| Name            | Example                         | Supported |
-| --------------- | ------------------------------- | --------- |
-| If Else         | `if..else..elif`                | ✅       |
-| Loop            | `for/while/break/continue`      | ✅       |
-| Function        | `def f(x,*args,y=1):`           | ✅       |
-| Subclass        | `class A(B):`                   | ✅       |
-| List            | `[1, 2, 'a']`                   | ✅       |
-| ListComp        | `[i for i in range(5)]`         | ✅       |
-| Slice           | `a[1:2], a[:2], a[1:]`          | ✅       |
-| Tuple           | `(1, 2, 'a')`                   | ✅       |
-| Dict            | `{'a': 1, 'b': 2}`              | ✅       |
-| F-String        | `f'value is {x}'`               | ✅       |
-| Unpacking       | `a, b = 1, 2`                   | ✅       |
-| Star Unpacking  | `a, *b = [1, 2, 3]`             | ✅       |
-| Exception       | `raise/try..except..`           | ✅       |
-| Dynamic Code    | `eval()/exec()`                 | ✅       |
-| Reflection      | `hasattr()/getattr()/setattr()` | ✅       |
-| Import          | `import/from..import`           | ✅       |
-| Context Block   | `with <expr> as <id>:`          | ✅       |
-| Type Annotation | `def f(a:int, b:float=1)`       | ✅       |
-| Generator       | `yield i`                       | ✅       |
-| Decorator       | `@cache`                        | ✅       |
-| Match Case      | `match code: case 200:`         | ✅       |
+pocketpy supports the core Python constructs used in application scripts.
+The [compatibility guide](differences.md) explains where their behavior differs
+from CPython; support for a construct does not imply support for every Python
+variant of it.
 
-## Supported magic methods
+| Area | Supported examples |
+| --- | --- |
+| Control flow | `if/elif/else`, `for`, `while`, `break`, `continue` |
+| Containers | `list`, `tuple`, `dict`, `set`, slicing, comprehensions |
+| Functions | `def`, `lambda`, defaults, `*args`, `**kwargs`, decorators, closures |
+| Classes | Single inheritance, methods, `super()`, `property`, static and class methods |
+| Iteration | `iter()`, `next()`, generators with `yield` and `yield from` |
+| Errors | `raise`, `try/except`, exception subclasses |
+| Modules | `import`, `from ... import`, relative imports |
+| Strings | UTF-8 strings, formatting, f-strings |
+| Other syntax | Unpacking, type annotations, `with`, simplified `match/case` |
+| Runtime access | `eval()`, `exec()`, `getattr()`, `setattr()`, `hasattr()` |
 
-#### Unary operators
+## Functions, data, and iteration
 
-+ `__repr__`
-+ `__str__`
-+ `__hash__`
-+ `__len__`
-+ `__iter__`
-+ `__next__`
-+ `__neg__`
+```python
+def scaled(values, factor=2):
+    for value in values:
+        yield value * factor
 
-#### Logical operators
+scores = [3, 5, 8]
+assert list(scaled(scores, factor=3)) == [9, 15, 24]
+assert {score: score * score for score in scores} == {3: 9, 5: 25, 8: 64}
+```
 
-+ `__eq__`
-+ `__lt__`
-+ `__le__`
-+ `__gt__`
-+ `__ge__`
-+ `__contains__`
+## Classes and properties
 
-#### Binary operators
+```python
+class Player:
+    def __init__(self, name):
+        self.name = name
+        self.score = 0
 
-+ `__add__`
-+ `__radd__`
-+ `__sub__`
-+ `__rsub__`
-+ `__mul__`
-+ `__rmul__`
-+ `__truediv__`
-+ `__floordiv__`
-+ `__mod__`
-+ `__pow__`
-+ `__matmul__`
-+ `__lshift__`
-+ `__rshift__`
-+ `__and__`
-+ `__or__`
-+ `__xor__`
-+ `__invert__`
+    @property
+    def rank(self):
+        return self.score // 100
 
-#### Indexer
+player = Player('Ada')
+player.score = 250
+assert player.rank == 2
+```
 
-+ `__getitem__`
-+ `__setitem__`
-+ `__delitem__`
+## Special methods
 
-#### Specials
+These are the principal special methods recognized by the runtime. Define them
+on your own types; do not modify built-in types.
 
-+ `__new__`
-+ `__init__`
-+ `__call__`
-+ `__divmod__`
-+ `__enter__`
-+ `__exit__`
-+ `__name__`
-+ `__all__`
+| Purpose | Methods |
+| --- | --- |
+| Display and identity | `__repr__`, `__str__`, `__hash__` |
+| Truth and size | `__bool__`, `__len__` |
+| Iteration and membership | `__iter__`, `__next__`, `__contains__` |
+| Comparison | `__eq__`, `__ne__`, `__lt__`, `__le__`, `__gt__`, `__ge__` |
+| Unary and numeric helpers | `__neg__`, `__abs__`, `__round__`, `__invert__`, `__divmod__` |
+| Arithmetic | `__add__`, `__sub__`, `__mul__`, `__truediv__`, `__floordiv__`, `__mod__`, `__pow__`, `__matmul__` |
+| Reflected arithmetic | `__radd__`, `__rsub__`, `__rmul__`, `__rtruediv__`, `__rfloordiv__`, `__rmod__`, `__rpow__` |
+| Bitwise operations | `__lshift__`, `__rshift__`, `__and__`, `__or__`, `__xor__` |
+| Items | `__getitem__`, `__setitem__`, `__delitem__`, `__missing__` |
+| Construction and calls | `__new__`, `__init__`, `__call__` |
+| Attribute fallback | `__getattr__` |
+| Context blocks | `__enter__`, `__exit__`, with [limited cleanup semantics](differences.md#context-managers) |
+| Serialization | `__reduce__`; see [pickle](../modules/pickle.md) |
+
+In-place hooks such as `__iadd__` and reflected bitwise hooks such as
+`__rand__` are not supported. Attributes such as `__name__` and
+`__all__` are metadata, rather than callable special methods.
+
+The complete runtime name list is in
+[magics.h](https://github.com/pocketpy/pocketpy/blob/main/include/pocketpy/xmacros/magics.h).

+ 53 - 59
docs/features/debugging.md

@@ -4,85 +4,79 @@ title: Debugging
 order: 80
 ---
 
-## Install VSCode Extension
+# Debugging
 
-To debug a pocketpy program, you need to install our VSCode extension first:
+The [pocketpy VS Code extension](https://marketplace.visualstudio.com/items?itemName=pocketpy.pocketpy)
+connects to the interpreter's debug server. Use a build with OS support for the
+default transport, and keep the Python sources used by that build available.
 
-https://marketplace.visualstudio.com/items?itemName=pocketpy.pocketpy
+## Launch a standalone script
 
-!!!
-The VSCode extension requires pocketpy version >= `2.1.1`
-!!!
+Install the extension, then create `.vscode/launch.json` in your project.
+For a Visual Studio build of pocketpy in the workspace root:
 
-## Create a `launch.json` file
-
-Navigate to the Debug view in VSCode, and click on "create a launch.json file" link.
-In the dropdown menu, select "pocketpy".
-
-![launch_json](../static/debugger/launch_json.png)
-
-Then a default `launch.json` file will be created in the `.vscode` folder
-with a sample pocketpy debug configuration.
-
-## How does it work?
-
-pocketpy provides a C-API `py_debugger_waitforattach`,
-which starts a debug server and waits for the VSCode extension to attach.
-When the debugger is attached, the program will continue to run.
+```json
+{
+    "version": "0.2.0",
+    "configurations": [
+        {
+            "type": "pocketpy",
+            "request": "launch",
+            "name": "Debug app.py",
+            "program": "${workspaceFolder}/build/Release/main.exe",
+            "args": ["--debug", "app.py"],
+            "cwd": "${workspaceFolder}",
+            "host": "127.0.0.1",
+            "port": 6110,
+            "sourceFolder": "${workspaceFolder}"
+        }
+    ]
+}
+```
 
-+ If you are using pocketpy's standalone executable `main.exe`, you can pass `--debug` flag to it. This will automatically call `py_debugger_waitforattach("127.0.0.1", 6110)` before running your program.
-+ If you are embedding pocketpy as a library, you need to call `py_debugger_waitforattach` manually in your C/C++ code.
+Set `program` to your actual executable, for example
+`${workspaceFolder}/build/main` for a single-configuration Unix build.
+Set a breakpoint in `app.py` and start the configuration.
 
-## Configuration
+The script argument is required: running without a filename opens the REPL,
+where `--debug` is ignored. Do not combine `--debug` with `--profile` or
+`--compile`.
 
-+ `type`: must be `pocketpy`
-+ `request`: can be `attach` or `launch`
-+ `name`: the name of this configuration
-+ `port`: the port number of the debug server, must match the one in `py_debugger_waitforattach`
-+ `host`: the host of the debug server, must match the one in `py_debugger_waitforattach`
-+ `sourceFolder`: the root folder of your python source code, default to `${workspaceFolder}`. However,
-sometimes you may run your program from a subfolder, in this case you need to set `sourceFolder` to the correct path. If this is not set correctly, breakpoints will not be hit.
-+ `program`: (for launch mode only) the path to the executable file which calls `py_debugger_waitforattach`, e.g. the pocketpy standalone executable `main.exe`.
-+ `args`: (for launch mode only) the arguments to pass to the executable file, e.g. `--debug` and the script path if you are using `main.exe`.
-+ `cwd`: (for launch mode only) the working directory to launch the executable file, default to `${workspaceFolder}`.
+## Attach to an embedded application
 
-### For attach mode
+Call `py_debugger_waitforattach("127.0.0.1", 6110)` after initialization and
+before executing the code to debug. The call waits for a debugger connection.
+The standalone `--debug` option makes this call for you.
 
-In this mode, you need to start your pocketpy program manually which must call `py_debugger_waitforattach` first.
-After the program starts, you can let VSCode attach to the debug server.
+To attach, add this entry to your `configurations` array and start the host
+application yourself:
 
 ```json
 {
     "type": "pocketpy",
     "request": "attach",
-    "name": "Attach to pocketpy program",
+    "name": "Attach to host",
+    "host": "127.0.0.1",
     "port": 6110,
-    "host": "localhost",
     "sourceFolder": "${workspaceFolder}"
 }
 ```
 
-### For launch mode
+Use the same host and port in both the native call and the configuration.
+The extension's [source repository](https://github.com/pocketpy/pocketpy-vscode-extension)
+contains the debugger client.
 
-In this mode, VSCode will start your program with the specified `program`, `args` and `cwd`.
-After the program starts, VSCode attempts to attach to the debug server automatically.
+## Paths and troubleshooting
 
-```json
-{
-    "type": "pocketpy",
-    "request": "launch",
-    "name": "Launch pocketpy program",
-    "port": 6110,
-    "host": "localhost",
-    "sourceFolder": "${workspaceFolder}",
-    "program": "${workspaceFolder}/pocketpy/main.exe",
-    "args": [
-        "--debug"
-    ],
-    "cwd": "${workspaceFolder}"
-}
-```
+| Symptom | Check |
+| --- | --- |
+| Program waits before executing | This is expected until the debugger attaches. |
+| Connection fails | Confirm that the host reached `py_debugger_waitforattach`, OS support is enabled, and host/port match. |
+| Breakpoints do not bind | Match `sourceFolder` to the source paths recorded during compilation. |
+| Local imports fail | Set `cwd` to the script import root; `sourceFolder` does not change imports. |
+| Source lines are unavailable | Use the original source revision; bytecode files do not embed source text. |
 
-## Showcase
+When embedding, provide meaningful filenames to `py_exec()`.
+Changing `sourceFolder` only affects debugger source lookup.
 
-![debugger_demo](../static/debugger/debugger_demo.png)
+![A pocketpy debugging session in VS Code](../static/debugger/debugger_demo.png)

+ 43 - 29
docs/features/deploy.md

@@ -1,53 +1,67 @@
 ---
 icon: dot
-title: Deploy Bytecodes
+title: Bytecode Deployment
 order: 81
 ---
 
-!!!
-The feature requires pocketpy version >= `2.1.7`
-!!!
+# Bytecode deployment
 
-You can deploy your pocketpy program as `.pyc` files, which are compiled bytecodes with necessary metadata.
-This slightly improves the loading speed of your program.
+pocketpy can compile scripts to `.pyc` files and run them without the original
+source. This avoids parsing at load time; it does not make the executed
+bytecode itself faster.
 
-It also makes your users unable to get your source code directly, unless they do expensive reverse engineering.
+These files use **pocketpy's own format**, not CPython's `.pyc` format.
+Compile and run with the same pocketpy revision and compatible build settings;
+do not assume bytecode compatibility across interpreter updates.
 
-To compile a `.py` file into a `.pyc` bytecode file, you need the command-line executable `main`,
-which can be simply built by running `python cmake_build.py` in the repository root.
+## Compile and run a file
 
-
-## Example
-
-Once you have `main` executable, you can run the following command to compile `input_file.py`:
+After [building the standalone interpreter](../quick-start.md):
 
 ```sh
-./main --compile input_file.py output_file.pyc
+./build/main --compile hello.py hello.pyc
+./build/main hello.pyc
 ```
 
-Alternatively, you can invoke the `compileall.py` script in the repository root.
-It compiles all `.py` files in the specified directory into `.pyc` files.
+With the Visual Studio generator:
 
-```sh
-python compileall.py ./main input_path output_path
+```powershell
+.\build\Release\main.exe --compile hello.py hello.pyc
+.\build\Release\main.exe hello.pyc
 ```
 
-## Running `.pyc` files
+Supply both input and output paths. The `--compile` option cannot be combined
+with `--debug` or `--profile`.
+
+## Compile a directory
 
-The command-line executable `main` can run `.pyc` files directly:
+Run the repository's `compileall.py` with a host Python interpreter:
 
 ```sh
-./main output_file.pyc
+python compileall.py ./build/main scripts dist
 ```
 
-If you are using C-APIs, you can use the `py_execo()` function.
+It recursively compiles `scripts/*.py`, preserving subdirectories under
+`dist/`. For example, `scripts/game/__init__.py` becomes
+`dist/game/__init__.pyc`. Non-Python assets are not copied.
 
-```c
-/// Run a compiled code object.
-PK_API bool py_execo(const void* data, int size, const char* filename, py_Ref module) PY_RAISE PY_RETURN;
-```
+Keep the module/package layout when distributing the output.
+The importer tries `.py` before `.pyc`, so a source file left beside the
+bytecode takes precedence. See [module loading](../C-API/modules.md).
+
+## Run bytecode from an embedded host
+
+`py_execo(data, size, filename, module)` accepts a byte buffer and its length.
+Pass `NULL` as the module to use `__main__`, and handle its boolean result
+the same way as `py_exec()`. A custom `importfile` callback must set the
+byte length when returning compiled modules.
+
+## Diagnostics and distribution limits
 
-## Trackback Support
+Tracebacks retain filenames and line numbers, but bytecode does not include
+the original source lines. Keep matching source files during debugging.
 
-Since `.pyc` files do not contain raw sources,
-trackbacks will show line numbers but not the actual source code lines.
+Bytecode is not encryption: constants and program structure remain available
+for inspection. Distribute only code you intend the recipient to run, and
+do not load untrusted bytecode. Keep credentials and other secrets outside
+distributed scripts and bytecode.

+ 129 - 25
docs/features/differences.md

@@ -4,36 +4,140 @@ title: Comparison with CPython
 order: 99
 ---
 
-[cpython](https://github.com/python/cpython) is the reference implementation of the Python programming language. It is written in C and is the most widely used implementation of Python.
+# Comparison with CPython
 
-## The design goal
+pocketpy is designed for embedded scripting. It follows familiar Python syntax
+while keeping a smaller runtime and library. Test scripts on the same pocketpy
+build that your application ships.
 
-**pkpy aims to be an alternative to lua for
-game scripting, not cpython for general purpose programming.**
+## Porting at a glance
 
-+ For syntax and semantics, pkpy is designed to be as close to cpython as possible.
-+ For ecosystem and others, pkpy is not compatible with cpython.
+| Area | pocketpy behavior | What to do when porting |
+| --- | --- | --- |
+| Integers | Signed 64-bit, rather than arbitrary precision | Keep calculations within range; use a host library for larger integers. |
+| Booleans | `bool` is separate from `int` | Convert explicitly when arithmetic needs 0 or 1. |
+| Function arguments | Parameters without defaults require positional arguments | Check call sites that pass every argument by name. |
+| Inheritance | One base class | Use composition instead of multiple inheritance. |
+| Descriptors | General `__get__`/`__set__` protocol unavailable | Use supported `property` bindings. |
+| In-place operations | `+=` syntax exists; `__iadd__` and similar hooks do not | Do not depend on a custom in-place method being called. |
+| Generator expressions | `(value for value in items)` is unsupported | Use a list comprehension or a generator function with `yield`. |
+| Bytes | A smaller operation set, including no repetition with `*` | Repeat text before encoding, or construct the required bytes in the host. |
+| Exceptions | `try/except` supported; `else` and `finally` clauses unsupported | Arrange explicit cleanup on success and failure. |
+| Context managers | Cleanup occurs only when execution reaches the end of the block | Read the cleanup example below. |
+| Pattern matching | `match/case` compares values for equality | Use explicit tests for destructuring and type checks. |
+| Imports | Host-controlled loading; no `sys.path` search list | Configure the working directory or a [custom loader](../C-API/modules.md). |
+| Packages | A selected standard library and native binding API | Check each [module page](../modules/index.md); CPython binary extensions are incompatible. |
 
-pkpy supports most of the syntax and semantics of python.
-For performance and simplicity, some features are not implemented, or behave differently.
-The easiest way to test a feature is to [try it on your browser](https://pocketpy.github.io/static/web/).
+Class `__slots__`, Python-level `__del__`, and general metaclass behavior
+are not supported. A native type can use a C destructor callback instead.
 
-## Unimplemented features
+## Function arguments
 
-1. Descriptor protocol `__get__` and `__set__`. However, `@property` is implemented.
-2. `__slots__` in class definition.
-3. `else` and `finally` clause in try..except.
-4. Inplace methods like `__iadd__` and `__imul__`.
-5. `__del__` in class definition.
-6. Multiple inheritance.
+A parameter without a default is positional. A parameter with a default may
+also be supplied by keyword:
 
-## Different behaviors
+```python
+def move(distance, speed=1):
+    return distance * speed
 
-1. positional and keyword arguments are strictly evaluated.
-2. `bool` does not derive from `int`. They are independent types.
-3. `int` is 64-bit.
-4. Raw string cannot have boundary quotes in it, even escaped. See [#55](https://github.com/pocketpy/pocketpy/issues/55).
-5. In a starred unpacked assignment, e.g. `a, b, *c = x`, the starred variable can only be presented in the last position. `a, *b, c = x` is not supported.
-6. A `Tab` is equivalent to 4 spaces. You can mix `Tab` and spaces in indentation, but it is not recommended.
-7. A return, break, continue in try/except/with block will make the finally block not executed.
-8. `match` is a keyword and `match..case` is equivalent to `if..elif..else`.
+assert move(10, speed=2) == 20
+assert move(10, 2) == 20
+
+try:
+    move(distance=10, speed=2)
+except TypeError:
+    print('distance must be positional')
+```
+
+`*args` and `**kwargs` are available, but they do not make all CPython call
+signatures interchangeable. Function defaults are parsed as literals; compute
+a dynamic default inside the function, commonly using `None` as a sentinel.
+
+## Numeric types
+
+```python
+assert not isinstance(True, int)
+assert int(True) == 1
+assert type(9223372036854775807) is int
+```
+
+The integer range is `-2**63` through `2**63 - 1`.
+Do not rely on CPython's arbitrary-precision results or on consistent overflow
+exceptions. Floating-point values use C `double`; the
+[math module](../modules/math.md) has additional API differences.
+
+## Context managers
+
+On normal completion, pocketpy calls `__exit__()` with **no exception
+arguments**. It does not call `__exit__` automatically after `return`,
+`break`, `continue`, or an exception leaves the block. It also does not use
+its return value to suppress an exception.
+
+This pattern explicitly closes a file on both paths:
+
+```python
+# Requires a build with PK_ENABLE_OS enabled.
+file = open('example.txt', 'w')
+try:
+    file.write('Hello\n')
+except Exception:
+    file.close()
+    raise
+file.close()
+```
+
+For resources owned by C/C++, consider keeping cleanup in the host.
+A plain `with` block is suitable only when its limited exit behavior is
+acceptable.
+
+## Unpacking and matching
+
+A starred assignment target must be last:
+
+```python
+first, *rest = [1, 2, 3]
+assert first == 1
+assert rest == [2, 3]
+```
+
+`first, *middle, last = values` is unsupported. Split that assignment into
+ordinary indexing and slicing.
+
+`match` is a keyword, not a soft keyword. Each `case` expression is compared
+to the subject, and `case _` is the fallback:
+
+```python
+status = 404
+match status:
+    case 200:
+        message = 'ok'
+    case 404:
+        message = 'not found'
+    case _:
+        message = 'unknown'
+assert message == 'not found'
+```
+
+A tuple case compares against that tuple; it is not a set of alternatives.
+Capture patterns, class patterns, and CPython's structural matching semantics
+are unavailable.
+
+## Strings and indentation
+
+Use four spaces per indentation level. A tab is interpreted as four spaces,
+but mixing tabs and spaces makes code harder to port.
+
+In a raw string, escaping the delimiting quote does not work as in CPython.
+Choose the other quote style or use an ordinary escaped string.
+
+## Library and native-code compatibility
+
+Pure Python code works only if its syntax and dependencies are supported.
+A module called `dataclasses`, `functools`, or `datetime` is a subset
+implementation, not a promise of full standard-library compatibility.
+Module pages call out important differences and include short examples.
+
+CPython wheels and extension modules cannot be loaded through pocketpy's C API.
+Expose native dependencies through [C bindings](../bindings.md) or the
+[bundled C++ layer](../bindings-cpp.md). Also read
+[unsupported operations](ub.md) before relying on low-level object behavior.

+ 2 - 2
docs/features/index.yml

@@ -1,3 +1,3 @@
 icon: star
-order: 16
-label: "Features"
+order: 15
+label: "Language and Tools"

+ 69 - 13
docs/features/profiling.md

@@ -4,26 +4,82 @@ title: Profiling
 order: 79
 ---
 
-To profile your pocketpy program, you can run `main.exe` with `--profile` flag.
+# Profiling
 
-For example, to profile `test/test_math.py`, run
+The line profiler shows where a script spends execution time.
+Use it to locate expensive lines, then [measure performance](../performance.md)
+again without profiling overhead.
 
+## Record a report
+
+Run a script with `--profile`:
+
+```sh
+./build/main --profile app.py
 ```
-main.exe --profile test/test_math.py
+
+For a Visual Studio build on Windows:
+
+```powershell
+.\build\Release\main.exe --profile app.py
 ```
 
-This will output a JSON report file named `profile_report.json` in the current directory,
-which records the time spent for each line. To visualize the report, please install our VSCode extension.
+The executable writes **`profiler_report.json`** in its current working
+directory. Make sure that directory is writable.
+Do not combine `--profile` with `--debug` or `--compile`; profiling without
+a script filename is ignored in REPL mode.
 
-https://marketplace.visualstudio.com/items?itemName=pocketpy.pocketpy
+## View the report
 
-!!!
-The VSCode extension requires pocketpy version >= `2.1.1`
-!!!
+Install the [pocketpy VS Code extension](https://marketplace.visualstudio.com/items?itemName=pocketpy.pocketpy).
+Open the command palette and run **pocketpy: Load Line Profiler Report**.
+Select the report, then the root folder containing the matching Python sources.
+Press Escape to leave the report view.
+
+![Line profiler results in VS Code](../static/profiler_demo.png)
+
+If annotations appear on the wrong lines, check that the sources match the
+profiled version and that the selected source root is correct.
 
-With pocketpy VSCode extension, press `F1` and type `pocketpy: Load Line Profiler Report`,
-select **1. the `profile_report.json` file; 2. the source root of the program**. Then you will see a nice visualization of the profiling result.
+## Profile execution in an embedded host
 
-![profiler_report](../static/profiler_demo.png)
+Start profiling **before entering Python execution**, then stop it when that
+execution returns. This complete C program prints the report as JSON:
 
-Press `ESC` to exit the report view.
+```c
+#include "pocketpy.h"
+#include <stdio.h>
+
+int main(void) {
+    py_initialize();
+    py_StackRef base = py_peek(0);
+
+    py_profiler_reset();
+    py_profiler_begin();
+    bool ok = py_exec("total = sum([i * i for i in range(1000)])\n",
+                      "app.py", EXEC_MODE, NULL);
+    py_profiler_end();
+
+    if(!ok) {
+        py_printexc();
+        py_clearexc(base);
+    }
+    char* report = py_profiler_report();
+    puts(report);
+    py_free(report);
+
+    py_finalize();
+    return ok ? 0 : 1;
+}
+```
+
+The C report function returns allocated JSON text. Save it or print it, then
+release it with `py_free()`. Profiling uses the VM's trace callback, so
+coordinate it with debugging and any custom tracing. Reset measurements only
+while profiling is stopped, and pair each begin with an end.
+
+!!!warning Starting from Python
+The `pkpy` module also exports profiler controls, but starting profiling from
+an already-running Python frame can crash in this revision. Use `--profile`
+or the C boundary shown above to ensure that frame tracking starts correctly.
+!!!

+ 57 - 135
docs/features/threading.md

@@ -1,153 +1,75 @@
 ---
 icon: dot
 title: Compute Threads
+order: 82
 ---
 
-pocketpy organizes its state by `VM` structure.
-Users can have at maximum 16 `VM` instances (index from 0 to 15).
-Each `VM` instance can only be accessed by exactly one thread at a time.
-If you are trying to run two python scripts in parallel refering the same `VM` instance,
-you will crash it definitely.
-
-However, there are two ways to achieve multi-threading in pocketpy.
-
-One way is to use a native threading library such as `pthread`.
-You can wrap the multi-threading logic into a C function and bind it to pocketpy.
-Be careful and not to access the same `VM` instance from multiple threads at the same time.
-You need to lock critical resources or perform a deep copy of all needed data.
-
-## ComputeThread
-
-The other way is to use `pkpy.ComputeThread`.
-It is like an isolate in Dart language.
-`ComputeThread` is a true multi-threading model to allow you run python scripts in parallel without lock,
-backed by a separate `VM` instance.
-
-`ComputeThread` is highly designed for computational intensive tasks in games.
-For example, you can run game logic in main thread (VM 0) and run world generation in another thread (e.g. VM 1).
-
-```mermaid
-graph TD
-    subgraph Main Thread
-        A[Game Start]
-        B[Submit WorldGen Job]
-        C[Frame 1]
-        D[Frame 2]
-        E[Frame 3]
-        F[...]
-        G[Get WorldGen Result]
-        H[Render World]
-    end
-    subgraph WorldGen Thread
-        O[Generate Biomes]
-        P[Generate Terrain]
-        Q[Generate Creatures]
-        R[Dump Result]
-    end
-    A --> B
-    B --> C
-    C --> D
-    D --> E
-    E --> F
-    F --> G
-    G --> H
-
-    O --> P
-    P --> Q
-    Q --> R
-
-    B --> O
-    R --> G
-```
+# Compute threads
 
-#### `main.py`
-```python
-import time
-from pkpy import ComputeThread
+A pocketpy VM contains independent modules, globals, and Python objects.
+There are 16 VM slots, indexed `0` through `15`; VM 0 is the default.
+**Only one native thread may access a particular VM at a time.**
+
+Build with `PK_ENABLE_THREADS=ON` to use `pkpy.ComputeThread`. This is the
+CMake default, but not the default for manual builds.
+Check `pkpy.configmacros['PK_ENABLE_THREADS']` when a build lacks the class.
 
-thread = ComputeThread(1)
-print("Game Start")
+## Run a job in another VM
 
-# import worldgen.py
-thread.exec('from worldgen import gen_world')
+This example needs no external Python files:
 
-print("Submit WorldGen Job")
-thread.submit_call('gen_world', 3, (100, 100), 10)
+```python
+from pkpy import ComputeThread
 
-# wait for worldgen to finish
-for i in range(1, 100000):
-    print('Frame:', i)
-    time.sleep(1)
-    if thread.is_done:
-        break
+worker = ComputeThread(1)
+worker.exec('def square_sum(count):\n    return sum([i * i for i in range(count)])')
 
-error = thread.last_error()
+worker.submit_call('square_sum', 100)
+# The main thread can do other work while the job runs.
+worker.wait_for_done()
+
+error = worker.last_error()
 if error is not None:
-    print("Error:", error)
-else:
-    retval = thread.last_retval()
-    biomes = retval['biomes']
-    terrain = retval['terrain']
-    creatures = retval['creatures']
-    print("World Generation Complete", len(biomes), len(terrain), len(creatures))
-```
+    raise RuntimeError(error)
 
-#### `worldgen.py`
-```python
-import time
-import random
-
-def gen_world(biome_count: int, terrain_size: tuple[int, int], creature_count: int) -> dict:
-    # simulate a long computation
-    time.sleep(3)
-
-    # generate world data
-    all_biomes = ["forest", "desert", "ocean", "mountain", "swamp"]
-    all_creatures = ["wolf", "bear", "fish", "bird", "lizard"]
-
-    width, height = terrain_size
-
-    terrain_data = [
-        random.randint(1, 10)
-        for _ in range(width * height)
-    ]
-
-    creatures = [
-        {
-            "name": random.choice(all_creatures),
-            "x": random.randint(0, width - 1),
-            "y": random.randint(0, height - 1),
-        }
-        for i in range(creature_count)
-    ]
-
-    return {
-        "biomes": all_biomes[:biome_count],
-        "terrain": terrain_data,
-        "creatures": creatures,
-    }
+assert worker.last_retval() == 328350
 ```
 
-Run `main.py` and you will see the result like this:
-```
-Game Start
-Submit WorldGen Job
-Frame: 1
-Frame: 2
-Frame: 3
-Frame: 4
-World Generation Complete 3 10000 10
-```
+`exec()` initializes the worker VM synchronously. `submit_call()` evaluates
+the function name in that VM and starts a background job. A main-thread
+function or global is not automatically visible in the worker.
+
+## Job API
+
+| Member | Behavior |
+| --- | --- |
+| `ComputeThread(vm_index)` | Reserve a worker VM from 1 through 15; use a distinct index per live worker. |
+| `exec(source)`, `eval(source)` | Run synchronously in the worker VM. |
+| `submit_exec(source)` | Submit statements; the successful result is `None`. |
+| `submit_eval(source)` | Submit an expression. |
+| `submit_call(expression, *args, **kwargs)` | Evaluate a callable in the worker and invoke it with copied arguments. |
+| `is_done` | Whether the submitted job has finished. |
+| `wait_for_done()` | Wait until completion. |
+| `last_error()` | Formatted worker error, or `None` after success. Read only after completion. |
+| `last_retval()` | Deserialize the result of a successful completed job. |
+
+Only one job can run per worker at a time. Wait for completion before submitting
+another job, and collect the result before a new job replaces it.
+
+In a frame loop, poll `is_done` once per frame. Read `last_error()` before
+`last_retval()`; a failed job has no usable return value. Keep the worker
+object alive until completion, and finish all jobs before finalizing the host.
+
+## Data and native resources
 
-`ComputeThread` uses `pickle` module to serialize the data between threads.
-Parameters and return values must be supported by `pickle`.
-See [pickle](https://pocketpy.github.io/modules/pickle/) for more details.
+Arguments and results cross the VM boundary through [pickle](../modules/pickle.md).
+They must be serializable; mutable containers are copied, not shared.
+For class instances, the corresponding class must be importable in the worker.
+Each VM loads its own Python module state.
 
-Since `ComputeThread` is backed by a separate `VM` instance,
-it does not share any state with the main thread
-except for the parameters you pass to it.
-Therefore, common python modules will be imported twice in each thread.
+Native libraries and host resources can still share process-wide state.
+Protect that state in your bindings. Do not pass `py_Ref` values between VMs
+or share a VM with a native worker that is already running.
 
-If you want to identify which VM instance the module is running in,
-you can call `pkpy.currentvm` or let your `ComputeThread` set some special flags
-before importing these modules.
+Use `pkpy.currentvm()` to identify the current VM. Custom import and output
+callbacks must be configured for each VM that needs them.

+ 22 - 8
docs/features/ub.md

@@ -1,14 +1,28 @@
 ---
 icon: dot
-title: Undefined Behaviour
+title: Unsupported Operations
+order: 98
 ---
 
-These are the undefined behaviours of pkpy. The behaviour of pkpy is undefined if you do the following things.
+# Unsupported operations
 
-1. Modify or delete an attribute of a builtin type. For example, `int.__add__ = f` or
-   `del int.__add__`. The interpreter takes fast paths that assume the arithmetic and
-   comparison methods of `int` and `float` are the original ones.
-2. Call an unbound method with the wrong type of `self`. For example, `int.__add__('1', 2)`.
-3. Type `T`'s `__new__` returns an object that is not an instance of `T`.
-4. Call `__new__` with a type that is not a subclass of `type`.
+The following operations violate runtime assumptions. They may crash the
+interpreter or produce incorrect results instead of a Python exception.
 
+| Operation | Example or explanation |
+| --- | --- |
+| Modify or delete an attribute of a built-in type | `int.__add__ = custom_add` or `del int.__add__`. Optimized paths assume the original methods. |
+| Call an unbound method with an invalid `self` | `int.__add__('1', 2)`. Use ordinary operations on valid instances. |
+| Return an unrelated object from `T.__new__` | The result must be an instance of `T`. |
+| Pass an invalid class argument to `__new__` | Constructors expect a type object and the appropriate inheritance relationship. |
+
+These restrictions are distinct from the documented
+[language differences](differences.md), such as unsupported syntax.
+
+At the C API boundary, respect the [reference lifetimes](../C-API/introduction.md):
+do not use a stale item reference, an object from another VM, or a reference
+after reset/finalization. Check types before low-level casts and do not access
+one VM concurrently from multiple threads.
+
+Use Debug builds during binding development. They include checks for common
+native callback errors, such as an unbalanced stack or a missing return value.

+ 6 - 0
docs/gsoc2024/guide.md

@@ -4,6 +4,12 @@ order: 10
 label: "Application Guide"
 ---
 
+!!!info Historical program material
+This page records the 2024 GSoC program. Dates, project plans, and setup
+instructions below belong to that program. For current pocketpy integration,
+use the [quick start](../quick-start.md) and [C API guide](../C-API/introduction.md).
+!!!
+
 Before starting, please read the [Ideas](./ideas.md) page and choose a project you are interested in.
 Set up a C++ compiler, clone pocketpy sources from github and try to build.
 This helps you confirm that your skills and experience match the requirements of the project.

+ 6 - 0
docs/gsoc2024/ideas.md

@@ -4,6 +4,12 @@ order: 0
 label: "Project Ideas"
 ---
 
+!!!info Historical program material
+This page records the 2024 GSoC program. Dates, project plans, and setup
+instructions below belong to that program. For current pocketpy integration,
+use the [quick start](../quick-start.md) and [C API guide](../C-API/introduction.md).
+!!!
+
 ### Implement pybind11 for bindings
 
 + Difficulty Level: 5/5 (Hard)

+ 2 - 2
docs/gsoc2024/index.yml

@@ -1,2 +1,2 @@
-order: -1
-label: "GSoC 2024"
+order: -22
+label: "GSoC 2024 (Archive)"

+ 6 - 0
docs/gsoc2025/guide.md

@@ -4,6 +4,12 @@ order: 10
 label: "Application Guide"
 ---
 
+!!!info Historical program material
+This page records the 2025 GSoC program. Dates, project plans, and setup
+instructions below belong to that program. For current pocketpy integration,
+use the [quick start](../quick-start.md) and [C API guide](../C-API/introduction.md).
+!!!
+
 Before starting, please read the [Ideas](./ideas.md) page and choose a project you are interested in.
 Set up a C11 compiler, clone pocketpy sources from github and try to build.
 This helps you confirm that your skills and experience match the requirements of the project.

+ 6 - 0
docs/gsoc2025/ideas.md

@@ -4,6 +4,12 @@ order: 0
 label: "Project Ideas"
 ---
 
+!!!info Historical program material
+This page records the 2025 GSoC program. Dates, project plans, and setup
+instructions below belong to that program. For current pocketpy integration,
+use the [quick start](../quick-start.md) and [C API guide](../C-API/introduction.md).
+!!!
+
 ### VSCode plugin for debugging pocketpy applications
 
 + Difficulty Level: 3/5 (Medium)

+ 2 - 2
docs/gsoc2025/index.yml

@@ -1,2 +1,2 @@
-order: 0
-label: "GSoC 2025"
+order: -21
+label: "GSoC 2025 (Archive)"

+ 6 - 0
docs/gsoc2026/guide.md

@@ -4,6 +4,12 @@ order: 10
 label: "Application Guide"
 ---
 
+!!!info Historical program material
+This page records the 2026 GSoC program. Dates, project plans, and setup
+instructions below belong to that program. For current pocketpy integration,
+use the [quick start](../quick-start.md) and [C API guide](../C-API/introduction.md).
+!!!
+
 Welcome to the Google Summer of Code 2026 application guide for pocketpy.
 We are recruiting a student who is passionate about vibe coding and mobile game development.
 

+ 6 - 0
docs/gsoc2026/ideas.md

@@ -4,6 +4,12 @@ order: 0
 label: "Project Ideas"
 ---
 
+!!!info Historical program material
+This page records the 2026 GSoC program. Dates, project plans, and setup
+instructions below belong to that program. For current pocketpy integration,
+use the [quick start](../quick-start.md) and [C API guide](../C-API/introduction.md).
+!!!
+
 
 ## Idea Title
 

+ 2 - 2
docs/gsoc2026/index.yml

@@ -1,2 +1,2 @@
-order: 1
-label: "GSoC 2026"
+order: -20
+label: "GSoC 2026 (Archive)"

+ 56 - 59
docs/index.md

@@ -3,79 +3,76 @@ icon: home
 label: Welcome
 ---
 
-# Welcome to pocketpy
+# pocketpy
 
-pocketpy is a portable Python 3.x interpreter, written in C11.
-It aims to be an alternative to Lua for game scripting, with elegant syntax, powerful features and competitive performance.
-pocketpy has no dependencies other than the C standard library, which can be easily integrated into your C/C++ project.
-Developers are able to write Python bindings via C-API or pybind11 compatible interfaces.
+pocketpy is a small Python 3.x interpreter written in C11, designed for embedding
+in games and other C/C++ applications. The core interpreter has no third-party
+dependencies. Optional modules add features such as compression and image I/O.
 
-+ [Live Python Demo](https://pocketpy.github.io/static/web/): Run Python code in your browser
-+ [Live C Examples](https://pocketpy.github.io/examples/): Explore C-APIs in your browser
-+ [Godot Extension](https://github.com/pocketpy/godot-pocketpy): Use pocketpy in Godot Engine
-+ [VSCode Extension](https://marketplace.visualstudio.com/items?itemName=pocketpy.pocketpy): Debug and profile pocketpy scripts in VSCode
-+ [Flutter Plugin](https://pub.dev/packages/pocketpy): Use pocketpy in Flutter apps
-+ [Raylib Bindings](https://github.com/pocketpy/raylib-bindings): Use raylib with pocketpy
+This documentation describes the **2.2.x API in this repository**. pocketpy
+implements a practical subset of Python; a familiar module name does not imply
+the full CPython API. Start with the [compatibility guide](features/differences.md)
+when porting an existing script.
 
-## What it looks like
+## Choose a starting point
+
+| I want to... | Read |
+| --- | --- |
+| Build the interpreter or embed it in an application | [Quick start](quick-start.md) |
+| Expose a C function to Python | [C bindings](bindings.md) |
+| Bind C++ functions and classes | [C++ bindings](bindings-cpp.md) |
+| Manage Python values and call scripts from C | [C API guide](C-API/introduction.md) |
+| Find a module and check its limitations | [Module overview](modules/index.md) |
+| Debug, profile, or distribute scripts | [Debugging](features/debugging.md), [profiling](features/profiling.md), [bytecode deployment](features/deploy.md) |
+
+## Try a script
 
 ```python
-def is_prime(x):
-  if x < 2:
-    return False
-  for i in range(2, x):
-    if x % i == 0:
-      return False
-  return True
-
-primes = [i for i in range(2, 20) if is_prime(i)]
-print(primes)
+def is_prime(value):
+    if value < 2:
+        return False
+    for divisor in range(2, value):
+        if value % divisor == 0:
+            return False
+    return True
+
+print([value for value in range(2, 20) if is_prime(value)])
 # [2, 3, 5, 7, 11, 13, 17, 19]
 ```
 
-## Supported platforms
-
-pkpy should work on any platform with a C11 compiler.
-These platforms are officially tested.
-
-+ Windows 64-bit
-+ Linux 64-bit / 32-bit
-+ macOS 64-bit
-+ Android 64-bit / 32-bit
-+ iOS 64-bit
-+ Emscripten 32-bit
-+ Raspberry Pi OS 64-bit
-+ [Luckfox Pico SDK](https://github.com/LuckfoxTECH/luckfox-pico) 32-bit
-
-On Windows platform, only MSVC compiler is officially supported.
-
-## Star the repo
+The [browser playground](https://pocketpy.github.io/static/web/) runs Python
+without installation. The [C examples](https://pocketpy.github.io/examples/)
+demonstrate the embedding API. Browser builds may enable different modules from
+a desktop build.
 
-If you find pkpy useful, consider [star this repository](https://github.com/blueloveth/pocketpy).
+## Platforms and integrations
 
-## Sponsor this project
+The project targets Windows, Linux, macOS, Android, iOS, Emscripten, and small
+Linux devices. A C11 compiler is required; Windows builds use MSVC. The current
+runtime requires little-endian hardware. See [build configuration](build.md) for
+compiler flags and optional features.
 
-You can sponsor this project via these ways.
+Integrations include [Godot](https://github.com/pocketpy/godot-pocketpy),
+[raylib](https://github.com/pocketpy/raylib-bindings), and
+[Flutter](https://pub.dev/packages/pocketpy). The
+[VS Code extension](https://marketplace.visualstudio.com/items?itemName=pocketpy.pocketpy)
+provides debugging and line profiling.
 
-+ [Github Sponsors](https://github.com/sponsors/blueloveTH)
-+ [Buy me a coffee](https://www.buymeacoffee.com/blueloveth)
+## Moving from 1.x
 
-Your sponsorship will help us develop pkpy continuously.
+Version 2 rewrote the interpreter in C11 and replaced the 1.x C++ API. Existing
+1.x embedding code needs to be ported. Choose the C API for explicit VM control
+or the bundled C\+\+17 binding layer for convenient C\+\+ integration. Script
+compatibility is described separately in the [language guide](features/differences.md).
 
-## Premium supporter
+## Community and support
 
-Special thanks to our premium supporter, Tesselmax, for sponsoring the development of pocketpy.
+Report issues or contribute through [GitHub](https://github.com/pocketpy/pocketpy).
+See the [contribution guide](https://github.com/pocketpy/pocketpy/blob/main/CONTRIBUTING.md)
+for development setup. You can support development through
+[GitHub Sponsors](https://github.com/sponsors/blueloveTH) or
+[Buy Me a Coffee](https://www.buymeacoffee.com/blueloveth).
 
-Tesselmax builds Tesselmax.EM, a distributed electromagnetic field simulator for silicon
-photonics and RF/interconnect design (FDTD, FDFD, and mode solving across GPU clusters).
-Tesselmax embeds pocketpy as the scripting engine in our simulation console, so user scripts drive
+Special thanks to **[Tesselmax](https://fdtd.io)** for sponsoring pocketpy.
+Tesselmax.EM embeds pocketpy in its electromagnetic simulation console to script
 geometry, materials, sources, and post-processing.
-
-Website: [https://fdtd.io](https://fdtd.io)
-
-## Upgrade to v2.0
-
-pkpy v2.0 is a C11 project instead of C++17. All your existing code for v1.x won't work anymore.
-
-We provide two API sets for v2.0, C-API and pybind11 API (C\+\+17). If you are a C user, use the C-API. If you are a C\+\+ user, use the pybind11 API.
-

+ 86 - 3
docs/modules/array2d.md

@@ -3,8 +3,91 @@ icon: package
 label: array2d
 ---
 
-Efficient general-purpose 2D array.
+# array2d
 
-#### Source code
+A rectangular grid for tile maps, images, cellular simulations, and other 2D
+data. Coordinates are **column first, row second**: `grid[x, y]`.
 
-:::code source="../../include/typings/array2d.pyi" :::
+## Create and address a grid
+
+`array2d(width, height, default=None)` requires positive dimensions.
+A callable default receives a `vmath.vec2i` position for each cell.
+
+```python
+from array2d import array2d
+from vmath import vec2i
+
+grid = array2d(3, 2, default=0)
+grid[1, 0] = 7
+assert grid.shape == vec2i(3, 2)
+assert grid.numel == 6
+assert grid.tolist() == [[0, 7, 0], [0, 0, 0]]
+assert grid.get(99, 0, -1) == -1
+
+cells = array2d(2, 2, default=lambda pos: [])
+cells[0, 0].append('player')
+assert cells[1, 0] == []
+```
+
+A non-callable default is copied by reference into every cell. Use a factory,
+as above, for independent mutable objects.
+
+`array2d.fromlist(rows)` accepts a nonempty rectangular list of rows.
+`width`/`n_cols`, `height`/`n_rows`, `shape`, and `numel` describe
+the dimensions. Integer cell coordinates must be nonnegative and in bounds.
+Use `is_valid(x, y)` or `get(x, y, default)` for boundary-aware access.
+
+## Views, copies, and masks
+
+Slicing creates a view sharing the original grid. Call `copy()` for a
+separate grid; contained Python objects are still shallow-copied.
+
+```python
+from array2d import array2d
+
+grid = array2d(3, 2, default=0)
+view = grid[1:3, :]
+view[:, :] = 5
+assert grid.tolist() == [[0, 5, 5], [0, 5, 5]]
+
+mask = grid == 5
+assert mask.any()
+assert not mask.all()
+assert grid[mask] == [5, 5, 5, 5]
+grid[mask] = 9
+assert grid.count(9) == 4
+```
+
+Comparisons produce boolean grids, not a single boolean.
+Use `(a == b).all()` for whole-grid equality.
+Arithmetic and bitwise operations accept scalars or compatible grids.
+
+## Transform and analyze
+
+| Method | Use |
+| --- | --- |
+| `map(function)` | Return a new grid of transformed values. |
+| `apply(function)` | Transform cells in place. |
+| `zip_with(other, function)` | Combine two grids cell by cell. |
+| `index(value)`, `count(value)` | Find the first position or count matching cells. |
+| `get_bounding_rect(value)` | `(x, y, width, height)`; raise `ValueError` if absent. |
+| `count_neighbors(value, neighborhood)` | Count matching neighbors of each cell. |
+| `get_connected_components(value, neighborhood)` | Return a label grid and component count; label 0 is unvisited. |
+| `convolve(kernel, padding)` | Integer-grid convolution with a padding value. |
+| `render()`, `render_with_color(fg, bg)` | Produce text for display. |
+
+Neighborhood names are `'Moore'` (eight neighbors) and `'von Neumann'`
+(four neighbors). Iteration yields `(position, value)` pairs.
+
+## Chunked grids
+
+`chunked_array2d(chunk_size, default=None, auto_add_chunk=True)` stores
+chunks addressed with `vec2i` world coordinates. It provides chunk creation,
+removal, movement, context data, and rectangular/chunk views.
+Use `world_to_chunk(position)` to obtain the chunk coordinate and local cell
+coordinate.
+
+The [API declarations](https://github.com/pocketpy/pocketpy/blob/main/include/typings/array2d.pyi)
+list the full grid, view, and chunk interfaces.
+`array2d` is not supported by [pickle](pickle.md); `tolist()` can provide a
+serializable representation when the cell values support it.

+ 21 - 4
docs/modules/base64.md

@@ -3,10 +3,27 @@ icon: package
 label: base64
 ---
 
-### `base64.b64encode(b: bytes) -> bytes`
+# base64
 
-Encode bytes-like object `b` using the standard Base64 alphabet.
+Convert binary data to and from the standard Base64 alphabet.
 
-### `base64.b64decode(b: str | bytes) -> bytes`
+| Function | Input and output |
+| --- | --- |
+| `b64encode(data)` | `bytes` to encoded `bytes`. |
+| `b64decode(data)` | Encoded `str` or `bytes` to decoded `bytes`. |
 
-Decode Base64 encoded bytes-like object `b`.
+```python
+import base64
+
+encoded = base64.b64encode(b'hello')
+assert encoded == b'aGVsbG8='
+assert base64.b64decode(encoded) == b'hello'
+assert base64.b64decode('aGVsbG8=') == b'hello'
+```
+
+Only these two functions are provided. There are no URL-safe alphabet,
+alternate-alphabet, or `validate=` options. Malformed input can return empty
+bytes instead of raising an error, so do not use the decoder as an input
+validator.
+
+Implementation: [base64.c](https://github.com/pocketpy/pocketpy/blob/main/src/modules/base64.c).

+ 21 - 17
docs/modules/bisect.md

@@ -3,26 +3,30 @@ icon: package
 label: bisect
 ---
 
-### `bisect.bisect_left(a, x)`
+# bisect
 
-Return the index where to insert item `x` in list `a`, assuming `a` is sorted.
+Find insertion positions in an already sorted list. Searching takes logarithmic
+time; insertion still moves list elements and can take linear time.
 
-### `bisect.bisect_right(a, x)`
+| Function | Result |
+| --- | --- |
+| `bisect_left(a, x, lo=0, hi=None)` | Index before existing entries equal to `x`. |
+| `bisect_right(a, x, lo=0, hi=None)` | Index after existing entries equal to `x`. |
+| `insort_left(a, x, lo=0, hi=None)` | Insert at the left position; return `None`. |
+| `insort_right(a, x, lo=0, hi=None)` | Insert at the right position; return `None`. |
 
-Return the index where to insert item `x` in list `a`, assuming `a` is sorted.
+`bisect` aliases `bisect_right`; `insort` aliases `insort_right`.
+The search interval is `[lo, hi)`, with `hi=None` meaning `len(a)`.
+Keep those bounds within the list. There is no `key=` parameter.
 
-### `bisect.insort_left(a, x)`
+```python
+from bisect import bisect_left, bisect_right, insort
 
-Insert item `x` in list `a`, and keep it sorted assuming `a` is sorted.
+scores = [10, 20, 20, 40]
+assert bisect_left(scores, 20) == 1
+assert bisect_right(scores, 20) == 3
+insort(scores, 30)
+assert scores == [10, 20, 20, 30, 40]
+```
 
-If x is already in a, insert it to the left of the leftmost x.
-
-### `bisect.insort_right(a, x)`
-
-Insert item `x` in list `a`, and keep it sorted assuming `a` is sorted.
-
-If x is already in a, insert it to the right of the rightmost x.
-
-#### Source code
-
-:::code source="../../python/bisect.py" :::
+Implementation: [bisect.py](https://github.com/pocketpy/pocketpy/blob/main/python/bisect.py).

+ 29 - 4
docs/modules/cmath.md

@@ -3,10 +3,35 @@ icon: package
 label: cmath
 ---
 
-Mathematical functions for complex numbers.
+# cmath
 
-https://docs.python.org/3/library/cmath.html
+Complex-number arithmetic implemented in Python. Construct values with
+`complex(real, imag=0)` or imaginary literals such as `2j`.
 
-#### Source code
+```python
+import cmath
 
-:::code source="../../python/cmath.py" :::
+value = complex(3, 4)
+assert value.real == 3.0
+assert value.imag == 4.0
+assert value.conjugate() == complex(3, -4)
+assert cmath.isclose(cmath.sqrt(complex(-1, 0)), complex(0, 1))
+radius, angle = cmath.polar(value)
+assert cmath.isclose(cmath.rect(radius, angle), value)
+```
+
+| Group | Members |
+| --- | --- |
+| Coordinates | `phase(z)`, `polar(z)`, `rect(radius, angle)` |
+| Powers/logarithms | `exp(z)`, `log(z, base=e)`, `log10(z)`, `sqrt(z)` |
+| Trigonometry | `sin`, `cos`, `tan`, `asin`, `acos`, `atan` |
+| Hyperbolic functions | `sinh`, `cosh`, `tanh`, `asinh`, `acosh`, `atanh` |
+| Classification | `isfinite(z)`, `isinf(z)`, `isnan(z)`, `isclose(a, b)` |
+| Constants | `pi`, `e`, `tau`, `inf`, `infj`, `nan`, `nanj` |
+
+Pass complex values explicitly to functions that access `real` and `imag`.
+`isclose` checks the real and imaginary parts with [math.isclose](math.md);
+it does not accept CPython's tolerance keywords. Do not assume identical
+branch-cut or domain-error behavior for all inputs.
+
+Implementation: [cmath.py](https://github.com/pocketpy/pocketpy/blob/main/python/cmath.py).

+ 47 - 8
docs/modules/collections.md

@@ -3,18 +3,57 @@ icon: package
 label: collections
 ---
 
-### `collections.Counter(iterable)`
+# collections
 
-Return a `dict` containing the counts of each element in `iterable`.
+Small container helpers for counting, grouping, and queues.
 
-### `collections.deque`
+## Counter
 
-A double-ended queue.
+`Counter(iterable)` returns a **plain dictionary** of occurrence counts,
+rather than a CPython `Counter` instance. Missing keys raise `KeyError`;
+use `get(key, 0)` for a zero default. Methods such as `most_common()` are
+not provided.
 
-### `collections.defaultdict`
+```python
+from collections import Counter, defaultdict, deque
 
-A dictionary that returns a default value when a key is not found.
+counts = Counter('banana')
+assert counts == {'b': 1, 'a': 3, 'n': 2}
+assert counts.get('z', 0) == 0
 
-#### Source code
+groups = defaultdict(list)
+groups['fruit'].append('apple')
+assert groups['fruit'] == ['apple']
 
-:::code source="../../python/collections.py" :::
+recent = deque([1, 2], maxlen=3)
+recent.append(3)
+recent.append(4)
+assert list(recent) == [2, 3, 4]
+assert recent.popleft() == 2
+```
+
+## defaultdict
+
+`defaultdict(default_factory, *args)` calls the factory with no arguments when
+`mapping[key]` is missing, stores the result, and returns it.
+Provide a callable factory such as `list` or `int`.
+`get()` does not create an entry. `copy()` preserves the factory.
+
+## deque
+
+`deque(iterable=None, maxlen=None)` is a double-ended queue. A bounded queue
+requires a positive `maxlen`; appending to a full queue removes an item from
+the opposite end.
+
+| Operations | Methods |
+| --- | --- |
+| Add items | `append`, `appendleft`, `extend`, `extendleft` |
+| Remove items | `pop`, `popleft`, `clear` |
+| Inspect/copy | `count`, `copy`, `maxlen`, `len()`, iteration, membership, equality |
+| Rotate | `rotate(n=1)`: positive moves right, negative moves left |
+
+`extendleft()` inserts each element at the left, reversing the input order.
+Popping an empty queue raises `IndexError`. Indexing and slicing are not
+implemented; convert to a list when needed.
+
+Implementation: [collections.py](https://github.com/pocketpy/pocketpy/blob/main/python/collections.py).

+ 48 - 0
docs/modules/console.md

@@ -0,0 +1,48 @@
+---
+icon: package
+label: picoterm and conio
+---
+
+# picoterm and conio
+
+Terminal helpers for text-based interfaces.
+
+## picoterm
+
+| Function | Use |
+| --- | --- |
+| `wcwidth(codepoint)` | Width estimate for a Unicode code point given as an integer. |
+| `wcswidth(text)` | Width estimate for text, excluding recognized ANSI escapes. |
+| `split_ansi_escaped_string(text)` | Split plain text, newlines, and recognized escape sequences into tokens. |
+| `sscanf(text, format, output)` | Parse decimal `%d`/`%i` fields into a list; return whether the format matched. |
+| `enable_full_buffering_mode()` | Enable a 32 KB buffer on native standard output. |
+
+```python
+import picoterm
+
+assert picoterm.wcswidth('hello') == 5
+assert picoterm.wcswidth('\x1b[31mhello\x1b[0m') == 5
+
+coordinates = []
+assert picoterm.sscanf('12,34', '%d,%d', coordinates)
+assert coordinates == [12, 34]
+```
+
+Width estimates use the module's character rules, not a complete grapheme or
+terminal-emulator model. The parser supports integer fields and exact literal
+characters, not the complete C `scanf` format language. It clears the output
+list before parsing and can leave partial results after a mismatch.
+
+## conio
+
+On desktop targets with `PK_ENABLE_OS=1`, `conio._kbhit()` reports keyboard
+input availability and `conio._getch()` reads a character code without ordinary
+line-buffered input. These functions require an appropriate terminal and are
+not a portable browser/mobile input API.
+
+For an embedded UI, prefer the application's own input events and
+[output callbacks](../C-API/modules.md).
+
+API declarations:
+[picoterm.pyi](https://github.com/pocketpy/pocketpy/blob/main/include/typings/picoterm.pyi),
+[conio.pyi](https://github.com/pocketpy/pocketpy/blob/main/include/typings/conio.pyi).

+ 38 - 5
docs/modules/cute_png.md

@@ -3,12 +3,45 @@ icon: package
 label: cute_png
 ---
 
+# cute_png
+
+PNG decoding and encoding backed by the bundled cute_png library.
+
+!!!info Optional module
+Enable `PK_BUILD_MODULE_CUTE_PNG=ON`; see [build configuration](../build.md).
 !!!
-This module is optional. Set option `PK_BUILD_MODULE_CUTE_PNG` to `ON` in your `CMakeLists.txt` to enable it.
-!!!
 
-Wraps [cute_png.h](https://github.com/RandyGaul/cute_headers/blob/master/cute_png.h) for PNG image loading and saving.
+## Encode and decode in memory
+
+```python
+from cute_png import Image
+from vmath import color32
+
+image = Image(2, 2)
+image.clear(color32(0, 0, 0, 255))
+image.setpixel(1, 0, color32(255, 0, 0, 255))
+
+data = image.to_png_bytes()
+restored = Image.from_bytes(data)
+assert restored.width == 2
+assert restored.height == 2
+assert restored.getpixel(1, 0) == color32(255, 0, 0, 255)
+```
+
+| API | Purpose |
+| --- | --- |
+| `Image(width, height)` | Allocate an image; initialize pixels with `clear()` or `setpixel()`. |
+| `Image.from_bytes(data)`, `Image.from_file(path)` | Decode a PNG. |
+| `getpixel(x, y)`, `setpixel(x, y, color)` | Read/write a `color32` pixel. |
+| `clear(color)` | Fill the image. |
+| `to_png_bytes()`, `to_png_file(path)` | Encode the image. |
+| `to_rgb565_file(path)` | Write RGB565 pixel data. |
+| `paste(...)` | Copy a region with foreground/background coloring. |
 
-#### Source code
+Coordinates use `(x, y)`, and must be within the image.
+File operations require an accessible host filesystem.
+For scripts using [array2d](array2d.md), `loads(data)` returns an
+`array2d[color32]` and `dumps(grid)` returns PNG bytes.
 
-:::code source="../../include/typings/cute_png.pyi" :::
+Full signatures, including `paste`:
+[cute_png.pyi](https://github.com/pocketpy/pocketpy/blob/main/include/typings/cute_png.pyi).

+ 30 - 6
docs/modules/dataclasses.md

@@ -3,14 +3,38 @@ icon: package
 label: dataclasses
 ---
 
-### `dataclasses.dataclass`
+# dataclasses
 
-A decorator that is used to add special method to classes, including `__init__`, `__repr__` and `__eq__`.
+`@dataclass` uses annotated fields to supply `__init__`, `__repr__`,
+`__eq__`, and `__ne__` when the class does not define them.
 
-### `dataclasses.asdict(obj) -> dict`
+```python
+from dataclasses import dataclass, asdict
 
-Convert a dataclass instance to a dictionary.
+@dataclass
+class Player:
+    name: str
+    score: int = 0
 
-#### Source code
+player = Player('Ada', score=10)
+assert player == Player('Ada', 10)
+assert asdict(player) == {'name': 'Ada', 'score': 10}
+assert repr(player) == "Player(name='Ada', score=10)"
+```
 
-:::code source="../../python/dataclasses.py" :::
+Fields without defaults must precede fields with defaults. Base-class
+annotations are included. Annotations describe fields; they do not validate
+the values assigned to them.
+
+## Differences from CPython
+
+- Use `@dataclass` directly. Decorator options such as `frozen`, `order`,
+  `slots`, and `kw_only` are not implemented.
+- There is no `field()`, `default_factory`, or automatic `__post_init__()`
+  call.
+- A mutable class-level default is shared. Create per-instance containers in
+  your own `__init__` instead.
+- `asdict(obj)` produces a **shallow** field dictionary. Nested objects and
+  containers are not recursively converted or copied.
+
+Implementation: [dataclasses.py](https://github.com/pocketpy/pocketpy/blob/main/python/dataclasses.py).

+ 26 - 6
docs/modules/datetime.md

@@ -3,14 +3,34 @@ icon: package
 label: datetime
 ---
 
-### `datetime.now()`
+# datetime
 
-Returns the current date and time as a `datetime` object.
+Basic local dates and times, backed by [time.localtime()](time.md).
 
-### `date.today()`
+| API | Purpose |
+| --- | --- |
+| `date(year, month, day)` | Store a calendar date. |
+| `date.today()` | Current local date. |
+| `datetime(year, month, day, hour, minute, second)` | Store date and time; all six arguments are required. |
+| `datetime.now()` | Current local date and time. |
+| `value.date()` | Extract a `date` from a `datetime`. |
+| `timedelta(days=0, seconds=0)` | Store days and seconds. |
 
-Returns the current local date as a `date` object.
+```python
+from datetime import date, datetime
 
-#### Source code
+deadline = date(2026, 10, 2)
+meeting = datetime(2026, 10, 2, 9, 30, 0)
+assert meeting.date() == deadline
+assert str(meeting) == '2026-10-02 09:30:00'
+assert date(2026, 10, 1) < deadline
+```
 
-:::code source="../../python/datetime.py" :::
+Dates and datetimes support field access, string representations, and
+comparisons. This module does not implement timezone objects, parsing with
+`strptime`, formatting with `strftime`, microseconds, or date arithmetic.
+`timedelta` stores its two fields without CPython's normalization and
+arithmetic behavior. Validate calendar inputs in your application; the date
+constructor does not perform full calendar validation.
+
+Implementation: [datetime.py](https://github.com/pocketpy/pocketpy/blob/main/python/datetime.py).

+ 35 - 33
docs/modules/easing.md

@@ -3,36 +3,38 @@ icon: package
 label: easing
 ---
 
-Python wrapper for [easing functions](https://easings.net/).
-
-+ `easing.Linear(t: float) -> float`
-+ `easing.InSine(t: float) -> float`
-+ `easing.OutSine(t: float) -> float`
-+ `easing.InOutSine(t: float) -> float`
-+ `easing.InQuad(t: float) -> float`
-+ `easing.OutQuad(t: float) -> float`
-+ `easing.InOutQuad(t: float) -> float`
-+ `easing.InCubic(t: float) -> float`
-+ `easing.OutCubic(t: float) -> float`
-+ `easing.InOutCubic(t: float) -> float`
-+ `easing.InQuart(t: float) -> float`
-+ `easing.OutQuart(t: float) -> float`
-+ `easing.InOutQuart(t: float) -> float`
-+ `easing.InQuint(t: float) -> float`
-+ `easing.OutQuint(t: float) -> float`
-+ `easing.InOutQuint(t: float) -> float`
-+ `easing.InExpo(t: float) -> float`
-+ `easing.OutExpo(t: float) -> float`
-+ `easing.InOutExpo(t: float) -> float`
-+ `easing.InCirc(t: float) -> float`
-+ `easing.OutCirc(t: float) -> float`
-+ `easing.InOutCirc(t: float) -> float`
-+ `easing.InBack(t: float) -> float`
-+ `easing.OutBack(t: float) -> float`
-+ `easing.InOutBack(t: float) -> float`
-+ `easing.InElastic(t: float) -> float`
-+ `easing.OutElastic(t: float) -> float`
-+ `easing.InOutElastic(t: float) -> float`
-+ `easing.InBounce(t: float) -> float`
-+ `easing.OutBounce(t: float) -> float`
-+ `easing.InOutBounce(t: float) -> float`
+# easing
+
+Convert normalized animation progress into an interpolation weight.
+Each function takes `t` and returns a float.
+
+```python
+import easing
+
+start = 10.0
+end = 30.0
+progress = 0.5
+weight = easing.InOutQuad(progress)
+position = start + (end - start) * weight
+assert position == 20.0
+```
+
+Use `Linear(t)` for constant speed. Each family below provides
+`In<Name>(t)`, `Out<Name>(t)`, and `InOut<Name>(t)`:
+
+| Family | Curve |
+| --- | --- |
+| `Sine` | Sinusoidal easing. |
+| `Quad`, `Cubic`, `Quart`, `Quint` | Polynomial easing of increasing degree. |
+| `Expo` | Exponential change. |
+| `Circ` | Circular curve. |
+| `Back` | Overshoot before settling. |
+| `Elastic` | Spring-like oscillation. |
+| `Bounce` | Bouncing transition. |
+
+For example, `OutCubic(t)` slows toward the endpoint. Clamp elapsed-time
+progress to `[0, 1]` in your application. Back and Elastic curves can
+deliberately overshoot that output range, so the result is not always suitable
+as an opacity value without further clamping.
+
+API declarations: [easing.pyi](https://github.com/pocketpy/pocketpy/blob/main/include/typings/easing.pyi).

+ 16 - 7
docs/modules/enum.md

@@ -3,11 +3,9 @@ icon: package
 label: enum
 ---
 
-### `enum.Enum`
+# enum
 
-Base class for creating enumerated constants.
-
-Example:
+Subclass `Enum` to give constants readable names and values.
 
 ```python
 from enum import Enum
@@ -17,8 +15,19 @@ class Color(Enum):
     GREEN = 2
     BLUE = 3
 
-print(Color.RED)    # Color.RED
-print(Color.RED.name)    # 'RED'
-print(Color.RED.value)    # 1
+assert Color.RED.name == 'RED'
+assert Color.RED.value == 1
+assert str(Color.RED) == 'Color.RED'
+assert Color.RED is Color.RED
 ```
 
+Members expose read-only `name` and `value` properties.
+A finished enum class cannot be subclassed further.
+
+This is a small implementation. It does not provide `IntEnum`, `Flag`,
+`auto()`, iteration over the enum class, or lookup by value through
+`Color(1)`. Public class attributes are wrapped as members, so keep enum
+definitions to constants rather than adding public helper methods.
+Duplicate values are not merged into CPython-style aliases.
+
+Implementation: [enum.c](https://github.com/pocketpy/pocketpy/blob/main/src/modules/enum.c).

+ 40 - 10
docs/modules/functools.md

@@ -3,23 +3,53 @@ icon: package
 label: functools
 ---
 
-### `functools.cache`
+# functools
 
-A decorator that caches a function's return value each time it is called. If called later with the same arguments, the cached value is returned, and not re-evaluated.
+Helpers for caching calls, reducing a sequence, and pre-filling arguments.
 
-### `functools.lru_cache(maxsize=128)`
+| API | Behavior |
+| --- | --- |
+| `@cache` | Cache results without a size limit. |
+| `@lru_cache(maxsize=128)` | Keep up to `maxsize` recently used argument tuples. |
+| `reduce(function, sequence, initial=...)` | Combine items from left to right. An empty sequence needs an initial value. |
+| `partial(function, *args, **kwargs)` | Store arguments for later calls. |
 
-A decorator that wraps a function with a memoizing callable that saves up to the maxsize most recent calls.
+## Cache a computation
 
-### `functools.reduce(function, sequence, initial=...)`
+```python
+from functools import lru_cache, reduce
 
-Apply a function of two arguments cumulatively to the items of a sequence, from left to right, so as to reduce the sequence to a single value. For example, `functools.reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])` calculates `((((1+2)+3)+4)+5)`. The left argument, `x`, is the accumulated value and the right argument, `y`, is the update value from the sequence. If the optional `initial` is present, it is placed before the items of the sequence in the calculation, and serves as a default when the sequence is empty.
+@lru_cache(maxsize=32)
+def fibonacci(n):
+    if n < 2:
+        return n
+    return fibonacci(n - 1) + fibonacci(n - 2)
 
-### `functools.partial(f, *args, **kwargs)`
+assert fibonacci(10) == 55
+assert reduce(lambda total, value: total + value, [1, 2, 3], 0) == 6
+```
 
-Return a new partial object which when called will behave like `f` called with the positional arguments `args` and keyword arguments `kwargs`. If more arguments are supplied to the call, they are appended to `args`. If additional keyword arguments are supplied, they extend and override `kwargs`.
+The cache decorators accept **positional calls only**, with hashable arguments.
+Use a positive integer `maxsize`; the implementation does not support
+CPython's `maxsize=None`, zero-size mode, `typed`, or `cache_info()`/
+`cache_clear()` methods. Cached mutable results are returned as the same
+object on later calls.
 
+## Partial calls
 
-#### Source code
+```python
+from functools import partial
 
-:::code source="../../python/functools.py" :::
+def label(name, prefix='item'):
+    return prefix + ': ' + name
+
+enemy_label = partial(label, prefix='enemy')
+assert enemy_label('slime') == 'enemy: slime'
+assert enemy_label('slime', prefix='boss') == 'enemy: slime'
+```
+
+Stored positional arguments are prepended to new ones. **Stored keyword
+arguments override keywords passed at call time** in this implementation.
+This differs from CPython, where call-time keywords win.
+
+Implementation: [functools.py](https://github.com/pocketpy/pocketpy/blob/main/python/functools.py).

+ 36 - 3
docs/modules/gc.md

@@ -3,8 +3,41 @@ icon: package
 label: gc
 ---
 
-Garbage collection interface module.
+# gc
 
-#### Source code
+Control the current VM's tracing garbage collector.
 
-:::code source="../../include/typings/gc.pyi" :::
+| Function | Behavior |
+| --- | --- |
+| `isenabled()` | Whether automatic collection is enabled. |
+| `enable()`, `disable()` | Enable/disable automatic collection. |
+| `collect()` | Run a full collection now and return the number of reclaimed objects. |
+| `collect_hint()` | Collect if the allocation threshold calls for it; return the reclaimed count. |
+| `setup_debug_callback(callback)` | Register collection diagnostics; pass `None` to remove the callback. |
+| `is_tracked(obj)`, `track(obj)`, `untrack(obj)` | Inspect or change whether the collector traverses an object's references. |
+
+```python
+import gc
+
+cycle = []
+cycle.append(cycle)
+del cycle
+reclaimed = gc.collect()
+assert type(reclaimed) is int
+assert reclaimed >= 1
+```
+
+Disabling automatic collection does not stop allocation or prevent explicit
+`collect()`/`collect_hint()` calls. A frame-driven application can disable
+automatic collection, call `collect_hint()` at an appropriate frame boundary,
+and re-enable it when leaving that mode. Memory may grow between collections;
+measure the effect before adopting this policy.
+
+`untrack()` is an advanced optimization for containers whose contents do not
+need tracing, such as a list containing only integer values. If an untracked
+container later contains GC-managed objects, its children can be reclaimed
+while still in use. Track it again before storing such values.
+
+Native code must also keep references visible to the collector; see
+[C API lifetimes](../C-API/introduction.md).
+Full declarations: [gc.pyi](https://github.com/pocketpy/pocketpy/blob/main/include/typings/gc.pyi).

+ 24 - 16
docs/modules/heapq.md

@@ -3,26 +3,34 @@ icon: package
 label: heapq
 ---
 
-### `heapq.heappush(heap, item)`
+# heapq
 
-Push the value `item` onto the heap, maintaining the heap invariant.
+Use a list as a min-heap: `heap[0]` is the smallest item, while the rest of the
+list is not necessarily sorted.
 
-### `heapq.heappop(heap)`
+| Function | Behavior |
+| --- | --- |
+| `heapify(items)` | Rearrange a list in place into a heap, in linear time. |
+| `heappush(heap, item)` | Add an item while maintaining the heap. |
+| `heappop(heap)` | Remove and return the smallest item; fail with `IndexError` if empty. |
+| `heappushpop(heap, item)` | Push, then remove the smallest; on an empty heap, return `item`. |
+| `heapreplace(heap, item)` | Remove the old smallest item, then insert `item`; require a nonempty heap. |
 
-Pop and return the smallest item from the heap, maintaining the heap invariant. If the heap is empty, IndexError is raised. To access the smallest item without popping it, use `heap[0]`.
+Items must support ordering. Push and pop operations take logarithmic time.
+This module provides these five functions; CPython helpers such as `merge`,
+`nlargest`, and `nsmallest` are not included.
 
-### `heapq.heapify(x)`
+```python
+import heapq
 
-Transform list `x` into a heap, in-place, in linear time.
+jobs = [(3, 'save'), (1, 'input'), (2, 'update')]
+heapq.heapify(jobs)
+heapq.heappush(jobs, (0, 'network'))
+assert heapq.heappop(jobs) == (0, 'network')
+assert heapq.heappop(jobs) == (1, 'input')
+```
 
-### `heapq.heappushpop(heap, item)`
+Tuple priorities compare subsequent fields to break ties. Add a numeric sequence
+number if tied jobs contain objects that cannot be compared.
 
-Push `item` on the heap, then pop and return the smallest item from the heap. The combined action runs more efficiently than `heappush()` followed by a separate `heappop()`.
-
-### `heapq.heapreplace(heap, item)`
-
-Pop and return the smallest item from the heap, and also push the new item. The heap size doesn’t change. If the heap is empty, IndexError is raised.
-
-#### Source code
-
-:::code source="../../python/heapq.py" :::
+Implementation: [heapq.py](https://github.com/pocketpy/pocketpy/blob/main/python/heapq.py).

+ 34 - 2
docs/modules/importlib.md

@@ -3,6 +3,38 @@ icon: package
 label: importlib
 ---
 
-### `importlib.reload(module)`
+# importlib
 
-Reload a previously imported module. The argument must be a module object, so it must have been successfully imported before. This is useful if you have edited the module source file using an external editor and want to try out the new version without leaving the Python interpreter. The return value is the module object (the same as the argument).
+`reload(module)` re-executes an already imported source module and returns
+the same module object. It reloads `.py` source through the current VM's
+[import callback](../C-API/modules.md), not compiled `.pyc` or native modules.
+
+For example, save this as `settings.py`:
+
+```python
+difficulty = 3
+```
+
+Run the following from the directory containing that file:
+
+```python
+import importlib
+import settings
+
+original = settings
+reloaded = importlib.reload(settings)
+assert reloaded is original
+print(settings.difficulty)  # 3, or the new value after editing settings.py
+```
+
+In a long-running host, edit the source and call `reload()` again to pick up
+the new contents.
+
+Reloading preserves the module dictionary and attempts to reuse existing
+class types. Names removed from the source can remain in the dictionary.
+References obtained through `from settings import difficulty` do not update
+automatically; prefer `settings.difficulty` for values intended to change.
+
+Reloading executes module-level side effects again and does not roll back a
+partially failed reload. Use it for controlled development workflows rather
+than assuming it resets all application state.

+ 79 - 0
docs/modules/index.md

@@ -0,0 +1,79 @@
+---
+title: Module Reference
+label: Modules
+icon: package
+order: 10
+---
+
+# Module reference
+
+pocketpy includes a focused set of Python modules and game-oriented extensions.
+These pages describe the APIs shipped in this repository, including differences
+from CPython. They are not a reference to the full Python standard library.
+
+Most native functions accept positional arguments. Examples show supported
+call forms; see the [argument rules](../features/differences.md#function-arguments).
+
+## Data and algorithms
+
+| Module | Use |
+| --- | --- |
+| [bisect](bisect.md) | Binary search and insertion into sorted lists. |
+| [collections](collections.md) | Counts, default dictionaries, and double-ended queues. |
+| [dataclasses](dataclasses.md) | Small data classes from annotations. |
+| [enum](enum.md) | Named constants. |
+| [functools](functools.md) | Caching, reductions, and partial calls. |
+| [heapq](heapq.md) | Min-heaps and priority queues. |
+| [operator](operator.md) | Operators and accessors as functions. |
+| [typing](typing.md) | Placeholders for type hints. |
+
+## Numbers, time, and text
+
+| Module | Use |
+| --- | --- |
+| [math](math.md), [cmath](cmath.md) | Real and complex mathematics. |
+| [random](random.md) | Pseudo-random values and independent generators. |
+| [time](time.md), [datetime](datetime.md) | Clocks and basic local date/time values. |
+| [unicodedata](unicodedata.md) | East Asian character-width classification. |
+| [base64](base64.md) | Binary-to-text encoding. |
+| [json](json.md) | JSON output and trusted-input expression loading. |
+| [pickle](pickle.md) | pocketpy object serialization. |
+
+## Runtime and host integration
+
+| Module | Use |
+| --- | --- |
+| [gc](gc.md) | Garbage collection control. |
+| [importlib](importlib.md) | Source module reloads. |
+| [inspect and dis](inspection.md) | Function metadata and bytecode inspection. |
+| [os and io](os.md) | Files and host OS access; requires `PK_ENABLE_OS`. |
+| [pkpy](pkpy.md) | VM diagnostics, profiling, timeouts, and compute threads. |
+| [stdc](stdc.md) | Native memory and typed C storage. |
+| [sys](sys.md) | Version, platform, arguments, and recursion limit. |
+| [traceback](traceback.md) | Exception reports. |
+| [picoterm and conio](console.md) | Terminal text and platform keyboard input. |
+
+## Games and grids
+
+| Module | Use |
+| --- | --- |
+| [array2d](array2d.md) | Grids, views, masks, and chunked maps. |
+| [vmath](vmath.md) | Native vectors, matrices, and colors. |
+| [easing](easing.md) | Animation interpolation curves. |
+
+## Optional native modules
+
+These modules default to **off** in CMake. See [build configuration](../build.md)
+for enabling them and initializing native dependencies.
+
+| Module | Required option |
+| --- | --- |
+| [cute_png](cute_png.md) | `PK_BUILD_MODULE_CUTE_PNG=ON` |
+| [lz4](lz4.md) | `PK_BUILD_MODULE_LZ4=ON` |
+| [msgpack](msgpack.md) | `PK_BUILD_MODULE_MSGPACK=ON` |
+| [periphery](periphery.md) | `PK_BUILD_MODULE_PERIPHERY=ON`, Linux target |
+
+A host application may add or replace modules. If an import fails, check the
+running build's capabilities and [module loader](../C-API/modules.md).
+Installing a CPython package does not automatically make it available to
+pocketpy.

+ 0 - 2
docs/modules/index.yml

@@ -1,2 +0,0 @@
-icon: package
-order: 10

+ 66 - 0
docs/modules/inspection.md

@@ -0,0 +1,66 @@
+---
+icon: package
+label: inspect and dis
+---
+
+# inspect and dis
+
+Inspect function metadata and the bytecode that pocketpy executes.
+
+## inspect
+
+| Function | Behavior |
+| --- | --- |
+| `isgeneratorfunction(obj)` | Whether a Python function or bound method is a generator function. |
+| `is_user_defined_type(type)` | Whether a type was created by a Python `class` statement. |
+| `signature(callable)` | A `Signature` with an ordered `parameters` dictionary for supported callables. |
+
+```python
+import inspect
+
+def countdown(start, step=1):
+    while start > 0:
+        yield start
+        start -= step
+
+assert inspect.isgeneratorfunction(countdown)
+signature = inspect.signature(countdown)
+assert str(signature) == '(start, step=1)'
+assert signature.parameters['step'].default == 1
+```
+
+Each `Parameter` exposes `name`, `kind`, and `default`.
+`Parameter.empty` marks a missing default. The kind constants use the familiar
+`POSITIONAL_ONLY`, `POSITIONAL_OR_KEYWORD`, `VAR_POSITIONAL`,
+`KEYWORD_ONLY`, and `VAR_KEYWORD` names.
+
+Signature metadata does not override pocketpy's
+[argument rules](../features/differences.md#function-arguments).
+In particular, the positional-or-keyword label is not a guarantee that a
+required parameter can be passed by name.
+
+Signature support is limited to Python functions and compatible wrappers,
+bound methods, and class initializers. Not all built-in/native callables have
+signatures. General source inspection, binding arguments to a signature,
+and annotation introspection are not implemented.
+
+## dis
+
+`dis.dis(function_or_code)` prints a bytecode listing and returns `None`:
+
+```python
+import dis
+
+def double(value):
+    return value * 2
+
+dis.dis(double)
+```
+
+Opcodes are specific to pocketpy and may change between versions.
+Use the output to understand execution, not as a stable serialization format.
+
+Implementations:
+[inspect.py](https://github.com/pocketpy/pocketpy/blob/main/python/inspect.py),
+[inspect.c](https://github.com/pocketpy/pocketpy/blob/main/src/modules/inspect.c),
+[dis.c](https://github.com/pocketpy/pocketpy/blob/main/src/modules/dis.c).

+ 32 - 10
docs/modules/json.md

@@ -3,19 +3,41 @@ icon: package
 label: json
 ---
 
-JSON serialization and deserialization module.
+# json
 
-This module is not safe. You may not want to use it with untrusted data.
-If you need a safe alternative, consider a 3rd-party library like `cjson`.
+Serialize simple data as JSON text.
 
-You can override the json functions with:
-```c
-py_GlobalRef mod = py_getmodule("json");
-py_bindfunc(mod, "loads", _safe_json_loads);
-py_bindfunc(mod, "dumps", _safe_json_dumps);
+!!!danger Trusted input only
+`json.loads()` evaluates its input as a Python expression in the `json`
+module. It can execute code and is not a strict JSON parser. Do not pass
+untrusted input to it.
+!!!
+
+| Function | Behavior |
+| --- | --- |
+| `loads(text: str)` | Evaluate text and return a Python value. JSON names `null`, `true`, and `false` are available. |
+| `dumps(obj, indent=0)` | Return a string; a positive integer indent enables multiline formatting. |
+
+Supported output values are `None`, booleans, integers, floats, strings, lists,
+tuples, and dictionaries with **string keys**. Tuples become JSON arrays and
+load as lists. Unsupported values raise `TypeError`. Keep containers acyclic.
+
+```python
+import json
+
+settings = {'name': 'Ada', 'lives': 3, 'sound': True}
+text = json.dumps(settings, indent=2)
+assert json.loads(text) == settings
+assert json.loads('{"value": null}') == {'value': None}
 ```
 
-#### Source code
+This API does not provide file-based `load`/`dump`, custom encoders,
+`object_hook`, `sort_keys`, or the full CPython option set.
+Non-finite floats are emitted as `NaN` or `Infinity`, which are outside
+strict JSON.
 
-:::code source="../../include/typings/json.pyi" :::
+For external data, bind a dedicated JSON parser in the host. A host may replace
+`json.loads` and `json.dumps` using [C binding helpers](../bindings.md);
+preserve the intended signatures and error reporting.
 
+Implementation: [json.c](https://github.com/pocketpy/pocketpy/blob/main/src/modules/json.c).

+ 27 - 5
docs/modules/lz4.md

@@ -3,12 +3,34 @@ icon: package
 label: lz4
 ---
 
+# lz4
+
+Fast compression of byte strings.
+
+!!!info Optional module
+Enable `PK_BUILD_MODULE_LZ4=ON`; see [build configuration](../build.md).
 !!!
-This module is optional. Set option `PK_BUILD_MODULE_LZ4` to `ON` in your `CMakeLists.txt` to enable it.
-!!!
 
-LZ4 compression and decompression.
+| Function | Result |
+| --- | --- |
+| `compress(data: bytes)` | Compressed bytes with a stored uncompressed size. |
+| `decompress(data: bytes)` | Restored bytes. |
+
+```python
+import lz4
+
+original = ('tile-data-' * 100).encode()
+packed = lz4.compress(original)
+assert lz4.decompress(packed) == original
+```
+
+The format is an LZ4 **block** preceded by a four-byte uncompressed-size field.
+It is not an LZ4 frame or a `.lz4` command-line file.
+Use matching block-format APIs when exchanging data with another library.
 
-#### Source code
+Decompression allocates from the stored size. Keep compressed data within your
+application's size limits; do not treat the size prefix as trustworthy for
+untrusted files. Serialize objects before compression, for example using
+[msgpack](msgpack.md) when its supported types fit.
 
-:::code source="../../include/typings/lz4.pyi" :::
+Implementation: [lz4.c](https://github.com/pocketpy/pocketpy/blob/main/src/modules/lz4.c).

+ 45 - 131
docs/modules/math.md

@@ -3,138 +3,52 @@ icon: package
 label: math
 ---
 
-### `math.pi`
-
-3.141592653589793
-
-### `math.e`
-
-2.718281828459045
-
-### `math.inf`
-
-The `inf`.
-
-### `math.nan`
-
-The `nan`.
-
-### `math.ceil(x)`
-
-Return the ceiling of `x` as a float, the smallest integer value greater than or equal to `x`.
-
-### `math.fabs(x)`
-
-Return the absolute value of `x`.
-
-### `math.floor(x)`
-
-Return the floor of `x` as a float, the largest integer value less than or equal to `x`.
-
-### `math.fsum(iterable)`
-
-Return an accurate floating point sum of values in the iterable. Avoids loss of precision by tracking multiple intermediate partial sums:
-
+# math
+
+Real-number functions and constants. Most functions accept an `int` or
+`float` and return a `float`; exceptions are noted below.
+Arguments to native functions are positional.
+
+## Available API
+
+| Group | Members |
+| --- | --- |
+| Constants | `pi`, `e`, `inf`, `nan` |
+| Rounding | `ceil(x)`, `floor(x)`, `trunc(x)` return integers; `fabs(x)` returns a float. |
+| Aggregation | `fsum(values)` for a list of numbers; `gcd(a, b)` for two integers. |
+| Classification | `isfinite(x)`, `isinf(x)`, `isnan(x)`, `isclose(a, b)` |
+| Powers/logarithms | `exp(x)`, `log(x)`, `log(x, base)`, `log2(x)`, `log10(x)`, `pow(x, y)`, `sqrt(x)`, `cbrt(x)` |
+| Trigonometry | `sin(x)`, `cos(x)`, `tan(x)`, `asin(x)`, `acos(x)`, `atan(x)`, `atan2(y, x)` |
+| Angles | `degrees(radians)`, `radians(degrees)` |
+| Decomposition | `modf(x)`, `fmod(x, y)`, `copysign(x, y)` |
+| Combinatorics | `factorial(n)` for a nonnegative integer. |
+
+Trigonometric arguments and results use radians. `modf(x)` returns
+`(fractional_part, integer_part)`, both floats; pass a float to this function.
+`copysign(x, y)` takes the magnitude of `x` and the sign of `y`.
+
+```python
+import math
+
+assert math.ceil(1.2) == 2
+assert type(math.floor(1.8)) is int
+assert math.gcd(18, 24) == 6
+assert math.fsum([0.1] * 10) == 1.0
+assert math.isclose(math.sin(math.pi / 2), 1.0)
+assert math.modf(2.5) == (0.5, 2.0)
 ```
->>> sum([0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1])
-0.9999999999999999
->>> fsum([0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1])
-1.0
-```
-
-### `math.gcd(a, b)`
-
-Return the greatest common divisor of the integers `a` and `b`.
-
-
-### `math.isfinite(x)`
-
-Return `True` if `x` is neither an infinity nor a NaN, and `False` otherwise.
-
-### `math.isinf(x)`
-
-Return `True` if `x` is a positive or negative infinity, and `False` otherwise.
-
-### `math.isnan(x)`
-
-Return `True` if `x` is a NaN (not a number), and `False` otherwise.
-
-### `math.isclose(a, b)`
-
-Return `True` if the values `a` and `b` are close to each other and `False` otherwise.
-
-### `math.exp(x)`
-
-Return `e` raised to the power of `x`.
-
-### `math.log(x)`
-
-Return the natural logarithm of `x` (to base `e`).
-
-### `math.log2(x)`
-
-Return the base-2 logarithm of `x`. This is usually more accurate than `log(x, 2)`.
-
-### `math.log10(x)`
-
-Return the base-10 logarithm of `x`. This is usually more accurate than `log(x, 10)`.
-
-### `math.pow(x, y)`
-
-Return `x` raised to the power `y`.
-
-### `math.sqrt(x)`
-
-Return the square root of `x`.
-
-### `math.cbrt(x)`
-
-Return the cube root of `x`. Unlike `sqrt`, `x` may be negative.
-
-### `math.acos(x)`
-
-Return the arc cosine of `x`, in radians.
-
-### `math.asin(x)`
-
-Return the arc sine of `x`, in radians.
-
-### `math.atan(x)`
-
-Return the arc tangent of `x`, in radians.
-
-### `math.atan2(y, x)`
-
-Return `atan(y / x)`, in radians. The result is between `-pi` and `pi`. The vector in the plane from the origin to point `(x, y)` makes this angle with the positive X axis. The point of `atan2()` is that the signs of both inputs are known to it, so it can compute the correct quadrant for the angle. For example, `atan(1)` and `atan2(1, 1)` are both `pi/4`, but `atan2(-1, -1)` is `-3*pi/4`.
-
-### `math.cos(x)`
-
-Return the cosine of `x` radians.
-
-### `math.sin(x)`
-
-Return the sine of `x` radians.
-
-### `math.tan(x)`
-
-Return the tangent of `x` radians.
-
-### `math.degrees(x)`
-
-Convert angle `x` from radians to degrees.
-
-### `math.radians(x)`
-
-Convert angle `x` from degrees to radians.
-
-### `math.modf(x)`
-
-Return the fractional and integer parts of `x`. Both results carry the sign of `x` and are floats.
-
-### `math.copysign(x, y)`
 
-Return a float with the magnitude (absolute value) of `x` but the sign of `y`.
+## Differences from CPython
 
-### `math.factorial(x)`
+- `fsum` accepts a list, not an arbitrary iterable, and uses compensated
+  summation rather than CPython's full algorithm.
+- `isclose(a, b)` checks `abs(a - b) < 1e-9`. It has no relative or absolute
+  tolerance keyword arguments; infinities do not compare close by this rule.
+- `gcd` takes exactly two arguments.
+- `factorial` is limited by signed 64-bit integers. Keep `n <= 20` for an
+  exact representable result.
+- Domain handling follows the implementation's math functions and may produce
+  NaN or infinity instead of CPython exceptions.
 
-Return `x` factorial as an integer.
+For complex values, use [cmath](cmath.md).
+Implementation: [math.c](https://github.com/pocketpy/pocketpy/blob/main/src/modules/math.c).

+ 28 - 6
docs/modules/msgpack.md

@@ -3,14 +3,36 @@ icon: package
 label: msgpack
 ---
 
+# msgpack
+
+Encode simple values in the MessagePack binary format.
+
+!!!info Optional module
+Enable `PK_BUILD_MODULE_MSGPACK=ON`; see [build configuration](../build.md).
 !!!
-This module is optional. Set option `PK_BUILD_MODULE_MSGPACK` to `ON` in your `CMakeLists.txt` to enable it.
-!!!
 
-### `msgpack.loads(data: bytes)`
+| Function | Result |
+| --- | --- |
+| `dumps(obj)` | Encoded `bytes`. |
+| `loads(data: bytes)` | Decoded Python value. |
+
+```python
+import msgpack
+
+state = {'level': 2, 'items': ['key', 'coin'], 'payload': b'\x00\x01'}
+packed = msgpack.dumps(state)
+assert msgpack.loads(packed) == state
+```
 
-Decode a msgpack bytes into a python object.
+The built-in conversion supports `None`, booleans, signed 64-bit integers,
+floats, strings, bytes, lists, and dictionaries. Use string or integer map keys.
+Arrays decode to lists; tuples and arbitrary class instances are not part of
+the default encoder.
 
-### `msgpack.dumps(obj) -> bytes`
+Keep integer values within pocketpy's signed 64-bit range, including when
+receiving MessagePack unsigned integers. Extension values require host-provided
+conversion hooks; they are not automatically mapped to Python classes.
+The API has no CPython third-party `msgpack` keyword option set.
 
-Encode a python object into a msgpack bytes.
+Implementation:
+[bindings.c](https://github.com/pocketpy/pocketpy/blob/main/3rd/msgpack/src/bindings.c).

+ 45 - 51
docs/modules/operator.md

@@ -3,54 +3,48 @@ icon: package
 label: operator
 ---
 
-The operator module exports a set of efficient functions corresponding to the intrinsic operators of Python. For example, `operator.add(x, y)` is equivalent to the expression `x+y`. Many function names are those used for special methods, without the double underscores.
-
-## Mapping Operators to Functions
-
-| Operation | Syntax | Function |
-| --- | --- | --- |
-| Ordering | `a <= b` | `le(a, b)` |
-| Ordering | `a < b` | `lt(a, b)` |
-| Ordering | `a >= b` | `ge(a, b)` |
-| Ordering | `a > b` | `gt(a, b)` |
-| Equality | `a == b` | `eq(a, b)` |
-| Equality | `a != b` | `ne(a, b)` |
-| Bitwise AND | `a & b` | `and_(a, b)` |
-| Bitwise OR | `a | b` | `or_(a, b)` |
-| Bitwise XOR | `a ^ b` | `xor(a, b)` |
-| Bitwise Inversion | `~a` | `invert(a)` |
-| Left Shift | `a << b` | `lshift(a, b)` |
-| Right Shift | `a >> b` | `rshift(a, b)` |
-| Identity | `a is b` | `is_(a, b)` |
-| Identity | `a is not b` | `is_not(a, b)` |
-| Negation (Logical) | `not a` | `not_(a)` |
-| Negation (Arithmetic) | `-a` | `neg(a)` |
-| Truth Test | `bool(a)` | `truth(a)` |
-| Containment Test | `b in a` | `contains(a, b)` |
-| Addition | `a + b` | `add(a, b)` |
-| Subtraction | `a - b` | `sub(a, b)` |
-| Multiplication | `a * b` | `mul(a, b)` |
-| Division | `a / b` | `truediv(a, b)` |
-| Division | `a // b` | `floordiv(a, b)` |
-| Modulo | `a % b` | `mod(a, b)` |
-| Exponentiation | `a ** b` | `pow(a, b)` |
-| Matrix Multiplication | `a @ b` | `matmul(a, b)` |
-| Indexing | `a[b]` | `getitem(a, b)` |
-| Index Assignment | `a[b] = c` | `setitem(a, b, c)` |
-| Index Deletion | `del a[b]` | `delitem(a, b)` |
-
-
-## In-place Operators
-| Operation | Syntax | Function |
-| --- | --- | --- |
-| Addition | `a += b` | `iadd(a, b)` |
-| Subtraction | `a -= b` | `isub(a, b)` |
-| Multiplication | `a *= b` | `imul(a, b)` |
-| Division | `a /= b` | `itruediv(a, b)` |
-| Division | `a //= b` | `ifloordiv(a, b)` |
-| Modulo | `a %= b` | `imod(a, b)` |
-| Bitwise AND | `a &= b` | `iand(a, b)` |
-| Bitwise OR | `a |= b` | `ior(a, b)` |
-| Bitwise XOR | `a ^= b` | `ixor(a, b)` |
-| Left Shift | `a <<= b` | `ilshift(a, b)` |
-| Right Shift | `a >>= b` | `irshift(a, b)` |
+# operator
+
+Function forms of Python operators, useful for callbacks and reductions.
+
+| Operation | Functions |
+| --- | --- |
+| Comparison | `lt`, `le`, `eq`, `ne`, `ge`, `gt` |
+| Arithmetic | `add`, `sub`, `mul`, `truediv`, `floordiv`, `mod`, `pow`, `matmul`, `neg` |
+| Bitwise | `and_`, `or_`, `xor`, `invert`, `lshift`, `rshift` |
+| Identity/truth | `is_`, `is_not`, `not_`, `truth` |
+| Containers | `contains(container, value)`, `getitem(obj, key)`, `setitem(obj, key, value)`, `delitem(obj, key)` |
+| Accessor factories | `itemgetter(key)`, `attrgetter(name)` |
+
+For binary operators, `operator.add(a, b)` means `a + b`, and similarly
+for the other names. `contains(a, b)` means `b in a`, so the container
+comes first.
+
+```python
+from operator import itemgetter, mul
+from functools import reduce
+
+players = [('Ada', 30), ('Bo', 10), ('Cy', 20)]
+assert sorted(players, key=itemgetter(1)) == [('Bo', 10), ('Cy', 20), ('Ada', 30)]
+assert reduce(mul, [2, 3, 4], 1) == 24
+```
+
+`itemgetter` accepts one key and `attrgetter` accepts one attribute name.
+Multiple keys/names and dotted attribute traversal are not implemented.
+
+The in-place helpers are `iadd`, `isub`, `imul`, `itruediv`,
+`ifloordiv`, `imod`, `iand`, `ior`, `ixor`, `ilshift`, and
+`irshift`. They perform the corresponding augmented assignment and return
+the result. They do not rebind the caller's variable:
+
+```python
+from operator import iadd
+
+value = 2
+value = iadd(value, 3)
+assert value == 5
+```
+
+Custom `__iadd__`-style hooks remain unsupported; see
+[language differences](../features/differences.md).
+Implementation: [operator.py](https://github.com/pocketpy/pocketpy/blob/main/python/operator.py).

+ 72 - 0
docs/modules/os.md

@@ -0,0 +1,72 @@
+---
+icon: package
+label: os and io
+---
+
+# os and io
+
+Host filesystem access, available when `PK_ENABLE_OS=1`.
+
+## Files
+
+`open(path, mode)` constructs an `io.FileIO`. Both arguments are required.
+Use modes such as `'r'`, `'w'`, `'a'`, `'rb'`, and `'wb'`.
+Binary modes ending in `b` read/write bytes; text modes read/write strings.
+
+```python
+import os
+
+file = open('example.txt', 'w')
+try:
+    assert file.write('hello') == 5
+except Exception:
+    file.close()
+    raise
+file.close()
+
+file = open('example.txt', 'r')
+try:
+    text = file.read()
+except Exception:
+    file.close()
+    raise
+file.close()
+
+assert text == 'hello'
+assert os.path.exists('example.txt')
+os.remove('example.txt')
+```
+
+| Method | Behavior |
+| --- | --- |
+| `read(size=-1)` | Read up to a byte count, or the remaining contents when omitted/negative. |
+| `write(data)` | Write a string or bytes according to the mode; return the byte count written. |
+| `tell()` | Return the current file position. |
+| `seek(offset, whence)` | Seek using both arguments; return the C `fseek` status. |
+| `flush()`, `close()` | Flush buffered output or close the handle. |
+
+`io.SEEK_SET`, `io.SEEK_CUR`, and `io.SEEK_END` select the origin for
+`seek`. There are no encoding/error-policy arguments, `StringIO`,
+`BytesIO`, or full CPython text-stream interfaces.
+
+Close files explicitly on both normal and exceptional paths.
+The [context manager limitations](../features/differences.md#context-managers)
+also apply to file objects.
+
+## OS functions
+
+| API | Behavior |
+| --- | --- |
+| `getcwd()` | Current process working directory. |
+| `chdir(path)` | Change that directory; this affects relative imports and file paths. |
+| `remove(path)` | Remove a file through the host C library. |
+| `path.exists(path)` | Test whether a path exists on supported targets. |
+| `system(command)` | Execute a host command on desktop platforms and return its status. |
+| `environ` | An initially empty dictionary, not a live view of the process environment. |
+
+Availability of individual OS operations depends on the target.
+The module does not provide CPython's full path utilities or directory APIs.
+For virtual filesystems or packaged scripts, configure
+[host import callbacks](../C-API/modules.md).
+
+Implementation: [os.c](https://github.com/pocketpy/pocketpy/blob/main/src/modules/os.c).

+ 35 - 4
docs/modules/periphery.md

@@ -3,10 +3,41 @@ icon: package
 label: periphery
 ---
 
+# periphery
+
+Low-level bindings to the bundled c-periphery library for Linux GPIO, SPI,
+I2C, serial, PWM, LED, and memory-mapped I/O.
+
+!!!info Optional Linux module
+Enable `PK_BUILD_MODULE_PERIPHERY=ON` and initialize its Git submodule.
+See [build configuration](../build.md).
 !!!
-This module is optional. Set option `PK_BUILD_MODULE_PERIPHERY` to `ON` in your `CMakeLists.txt` to enable it.
-!!!
 
-#### Source code
+To confirm that a build includes it, run on the target Linux system:
+
+```python
+import periphery
+
+print(periphery.periphery_version())
+```
+
+This module follows the **C API**, using function names such as `gpio_new`,
+`gpio_open`, `gpio_read`, `gpio_close`, and `gpio_free`.
+It does not provide the high-level class API of the separate
+`python-periphery` package.
+
+Handles and pointer arguments are integer addresses. Use [stdc](stdc.md)
+to prepare typed storage for output parameters. Follow each function's return
+code contract and keep buffers alive throughout native calls.
+Close opened devices and free allocated handles on both success and failure;
+pocketpy's `with` does not provide general exception cleanup.
+
+Device paths, permissions, pin numbering, and electrical settings depend on
+the board. Choose them from your hardware configuration rather than copying
+a generic output example.
 
-:::code source="../../include/typings/periphery.pyi" :::
+Full binding signatures:
+[periphery.pyi](https://github.com/pocketpy/pocketpy/blob/main/include/typings/periphery.pyi).
+The bundled
+[c-periphery documentation](https://github.com/vsergeev/c-periphery/tree/master/docs)
+describes native arguments and return codes.

+ 51 - 25
docs/modules/pickle.md

@@ -3,39 +3,65 @@ icon: package
 label: pickle
 ---
 
-### `pickle.dumps(obj) -> bytes`
+# pickle
 
-Return the pickled representation of an object as a bytes object.
+Save Python object graphs as bytes and restore them within pocketpy.
 
-### `pickle.loads(b: bytes)`
+| Function | Result |
+| --- | --- |
+| `dumps(obj)` | Serialized `bytes`. |
+| `loads(data: bytes)` | Restored object. |
 
-Return the unpickled object from a bytes object.
+!!!warning
+Only load data you trust. Deserialization can resolve classes and call
+reconstruction functions. This is pocketpy's own format, not CPython's pickle
+protocol; use a matching runtime when exchanging saved data.
+!!!
 
+## Shared references and cycles
 
-## What can be pickled and unpickled?
+```python
+import pickle
 
-The following types can be pickled:
+shared = ['coin']
+inventory = [shared, shared]
+restored = pickle.loads(pickle.dumps(inventory))
+assert restored == [['coin'], ['coin']]
+assert restored[0] is restored[1]
 
-- [x] None, True, and False;
-- [x] integers, floating-point numbers;
-- [x] strings, bytes;
-- [x] tuples, lists, sets, and dictionaries containing only picklable objects;
-- [x] functions (user-defined) accessible from the top level of a module (using def, not lambda);
-- [x] classes accessible from the top level of a module;
-- [x] instances of such classes
+cycle = []
+cycle.append(cycle)
+restored_cycle = pickle.loads(pickle.dumps(cycle))
+assert restored_cycle[0] is restored_cycle
+```
 
-`array2d` instances cannot be pickled. Calling `pickle.dumps()` on an `array2d`
-raises `TypeError`. Previously pickled `array2d` data is no longer supported.
+## Supported objects
 
-Cyclic and shared references are preserved: `list`, `dict` and instances of
-python classes are memoized before their contents are written, so an object
-graph containing reference cycles round-trips correctly and object identity
-is retained. A cycle that passes only through a `tuple` or through a
-`__reduce__` result is not supported.
+- `None`, booleans, integers, floats, strings, and bytes.
+- Tuples, lists, sets, and dictionaries containing supported values.
+- User-defined functions and classes accessible by name at module scope.
+- Instances of such classes, and native types with supported reconstruction
+  behavior, such as [random.Random](random.md).
 
-The following magic methods are available:
+Functions and classes are resolved by their module/name; their source code is
+not packed into the data. Make those definitions available when loading,
+especially in a [worker VM](../features/threading.md). Lambdas and local
+functions are not suitable replacements for module-level definitions.
 
-- [ ] `__getnewargs__`
-- [ ] `__getstate__`
-- [ ] `__setstate__`
-- [x] `__reduce__`
+Lists, dictionaries, and Python class instances are memoized before their
+contents, preserving shared identity and supported reference cycles.
+Cycles involving a tuple or a `__reduce__` reconstruction can be restricted;
+a tuple-only cycle or a self-reference through a reduce result is unsupported.
+
+`array2d` instances cannot be pickled and raise `TypeError`.
+Previously pickled `array2d` data is not supported. Convert appropriate
+contents to lists if needed.
+
+## Custom reconstruction
+
+`__reduce__()` must return a two-item tuple
+`(reconstruction_callable, argument_tuple)`.
+The callable must be resolvable when loading. The hooks `__getnewargs__`,
+`__getstate__`, and `__setstate__` are not implemented.
+
+Implementation: [pickle.c](https://github.com/pocketpy/pocketpy/blob/main/src/modules/pickle.c).

+ 42 - 3
docs/modules/pkpy.md

@@ -3,8 +3,47 @@ icon: package
 label: pkpy
 ---
 
-Provide internal access to the pocketpy interpreter.
+# pkpy
 
-#### Source code
+pocketpy-specific runtime controls and diagnostics.
 
-:::code source="../../include/typings/pkpy.pyi" :::
+| API | Purpose |
+| --- | --- |
+| `configmacros` | Dictionary of selected compile-time settings. |
+| `currentvm()` | Index of the current VM. |
+| `memory_usage()` | Interpreter memory estimate in bytes. |
+| `memory_usage_info()` | Human-readable allocation/GC report. |
+| `profiler_begin()`, `profiler_end()` | Start/stop line profiling; see the [startup limitation](../features/profiling.md#profile-execution-in-an-embedded-host). |
+| `profiler_reset()`, `profiler_report()` | Reset measurements, or stop active profiling and return a report dictionary. |
+| `ComputeThread` | Run independent jobs in another VM; requires thread support. |
+| `watchdog_begin(timeout)`, `watchdog_end()` | Enable/disable execution timeout checks; requires watchdog support. |
+| `TValue[type](value)` | Typed value wrapper with a read-only `value` property. |
+
+```python
+import pkpy
+
+assert pkpy.currentvm() == 0
+assert type(pkpy.memory_usage()) is int
+print(pkpy.memory_usage_info())
+assert pkpy.TValue[int](42).value == 42
+```
+
+`configmacros` includes `PK_ENABLE_OS`, `PK_ENABLE_THREADS`,
+`PK_ENABLE_DETERMINISM`, `PK_ENABLE_WATCHDOG`, `PK_GC_MIN_THRESHOLD`,
+and `PK_VM_STACK_SIZE`. It is a diagnostic snapshot; editing it does not
+reconfigure the compiled runtime. The memory estimate is not the process's
+resident memory usage.
+
+`TValue` provides wrappers for `int`, `float`, `vmath.vec2`, and
+`vmath.vec2i`; it is not a general-purpose runtime generic type.
+
+## Watchdog
+
+When built with `PK_ENABLE_WATCHDOG=ON`, `watchdog_begin(timeout)` takes
+milliseconds and timeout checks can raise `TimeoutError`.
+Call `watchdog_end()` after the protected work on both success and error paths.
+These checks do not preempt a blocking native call.
+
+For complete workflows, see [compute threads](../features/threading.md),
+[profiling](../features/profiling.md), and [build configuration](../build.md).
+API declarations: [pkpy.pyi](https://github.com/pocketpy/pocketpy/blob/main/include/typings/pkpy.pyi).

+ 43 - 43
docs/modules/random.md

@@ -3,55 +3,55 @@ icon: package
 label: random
 ---
 
-### `random.seed(a)`
+# random
+
+Pseudo-random numbers from a Mersenne Twister generator. Module-level functions
+use a shared generator in the current VM; `Random` creates independent state.
+This generator is for simulations and games, not cryptographic secrets.
+
+| API | Behavior |
+| --- | --- |
+| `seed(value)` | Seed with an integer, or `None` for the clock. Integer seeds use the low 32 bits. |
+| `random()` | Float in `[0.0, 1.0)`. |
+| `randint(a, b)` | Integer including both endpoints; require `a <= b`. |
+| `uniform(a, b)` | Float between the endpoints; floating-point rounding can affect the boundary. |
+| `choice(sequence)` | One item from a nonempty list, tuple, or string. |
+| `shuffle(items)` | Shuffle a list in place; return `None`. |
+| `choices(population, weights=None, k=1)` | List of `k` selections with replacement; population and weights are lists or tuples. |
+| `getstate()`, `setstate(state)` | Save/restore the generator's state as bytes. |
+| `Random(value=None)` | New generator, optionally initialized with an integer seed or saved state bytes. |
+
+For weighted choices, supply finite nonnegative weights with matching length
+and total greater than `1e-6`; use a nonnegative `k`.
+Unseeded generators initialize from the clock on first use.
+
+## Repeatable independent draws
 
-Set the random seed.
-
-### `random.random()`
-
-Return a random float number in the range [0.0, 1.0).
-
-### `random.randint(a, b)`
-
-Return a random integer in the range [a, b].
-
-### `random.uniform(a, b)`
-
-Return a random float number in the range [a, b).
-
-### `random.choice(seq)`
-
-Return a random element from a sequence.
-
-### `random.shuffle(seq)`
-
-Shuffle a sequence inplace.
-
-### `random.choices(population, weights=None, k=1)`
-
-Return a k sized list of elements chosen from the population with replacement.
-
-### `random.getstate()`
-
-Return the internal state of the generator as a `bytes` object.
-
-### `random.setstate(state)`
+```python
+from random import Random
 
-Restore the internal state of the generator from a `bytes` object
-returned by a previous call to `getstate()`.
+rng = Random(7)
+state = rng.getstate()
+rolls = [rng.randint(1, 6) for _ in range(5)]
+rng.setstate(state)
+assert rolls == [rng.randint(1, 6) for _ in range(5)]
 
-### `random.Random(x=None)`
+loot = rng.choices(['coin', 'gem'], weights=[9, 1], k=3)
+assert len(loot) == 3
+assert all([item in ['coin', 'gem'] for item in loot])
+```
 
-Create a new generator. `x` may be an `int` seed, `None` (seeded lazily from the
-system clock on first use), or a state returned by `getstate()`.
+State bytes use pocketpy's internal representation, not CPython's state tuple.
+Do not assume sequences or saved states are interchangeable with CPython or
+across future runtime versions.
 
-A `Random` object supports `pickle`, so its state can be saved and restored:
+A generator can also be [pickled](pickle.md):
 
 ```python
-import pickle, random
+import pickle
+from random import Random
 
-r = random.Random(7)
-data = pickle.dumps(r)
-r2 = pickle.loads(data)
-assert r.random() == r2.random()
+original = Random(7)
+restored = pickle.loads(pickle.dumps(original))
+assert original.random() == restored.random()
 ```

+ 57 - 0
docs/modules/stdc.md

@@ -0,0 +1,57 @@
+---
+icon: package
+label: stdc
+---
+
+# stdc
+
+Typed native storage and raw-memory operations for C bindings.
+
+## Typed storage
+
+```python
+from stdc import Int32, addressof, sizeof
+
+value = Int32(42)
+assert value.value == 42
+Int32.write(addressof(value), 0, 100)
+assert value.value == 100
+
+items = Int32.array(3)
+items[0] = 10
+items[1] = 20
+items[2] = 30
+assert Int32.read(addressof(items), 1) == 20
+assert sizeof(Int32) == 4
+```
+
+`Type(value)` creates scalar storage; `Type.array(length)` creates an array.
+The wrapper keeps that storage alive. Initialize array elements before reading
+them. `read(pointer, offset)` and `write(pointer, offset, value)` use offsets
+in **elements of the selected type**, not bytes.
+
+| Family | Types |
+| --- | --- |
+| C integers | `Char`, `UChar`, `Short`, `UShort`, `Int`, `UInt`, `Long`, `ULong`, `LongLong`, `ULongLong` |
+| Fixed widths | `Int8/16/32/64`, `UInt8/16/32/64` |
+| Other C values | `Float`, `Double`, `Bool`, `Pointer` |
+| Platform sizes | `SizeT`, `IntPtrT`, `UIntPtrT` |
+
+Use `sizeof(type)` to query the native size rather than assuming a platform's
+`long` or pointer width.
+
+## Raw memory
+
+The module exposes `malloc`, `free`, `memcpy`, `memset`, `memcmp`,
+`read_cstr`, `write_cstr`, `read_bytes`, and `write_bytes`.
+Pointer values are integers.
+
+These operations do not provide Python's memory safety. Validate addresses,
+sizes, and ownership; retain the wrapper while its address is in use.
+Allocate enough space for string terminators, and free manually allocated
+memory exactly once. Do not call `free()` on memory owned by a typed wrapper.
+
+Full signatures:
+[stdc.pyi](https://github.com/pocketpy/pocketpy/blob/main/include/typings/stdc.pyi).
+Runtime type names follow
+[stdc.c](https://github.com/pocketpy/pocketpy/blob/main/src/modules/stdc.c).

+ 34 - 25
docs/modules/sys.md

@@ -3,28 +3,37 @@ icon: package
 label: sys
 ---
 
-### `sys.version`
-
-The version of pkpy.
-
-### `sys.platform`
-
-May be one of:
-+ `win32`
-+ `linux`
-+ `darwin`
-+ `android`
-+ `ios`
-+ `emscripten`
-
-### `sys.argv`
-
-The command line arguments. Set by `py_sys_setargv`.
-
-### `sys.setrecursionlimit(limit: int)`
-
-Set the maximum depth of the Python interpreter stack to `limit`. This limit prevents infinite recursion from causing an overflow of the C stack and crashing the interpreter.
-
-### `sys.getrecursionlimit() -> int`
-
-Return the current value of the recursion limit.
+# sys
+
+Interpreter identification, host-supplied arguments, and recursion limits.
+
+| Member | Meaning |
+| --- | --- |
+| `version` | pocketpy's version string, such as `'2.2.0'`; not a CPython version. |
+| `platform` | Target platform identifier, such as `win32`, `linux`, `darwin`, `android`, `ios`, or `emscripten`. |
+| `argv` | Argument list supplied by the host. |
+| `getrecursionlimit()` | Current Python call-depth limit. |
+| `setrecursionlimit(limit)` | Change the limit; values at or below the current depth raise `ValueError`. |
+
+```python
+import sys
+
+print(sys.version, sys.platform)
+print(sys.argv)
+original = sys.getrecursionlimit()
+sys.setrecursionlimit(original + 100)
+assert sys.getrecursionlimit() == original + 100
+sys.setrecursionlimit(original)
+```
+
+The initial recursion limit is 1000. Raising it increases the depth the runtime
+allows; it does not increase the native stack or VM value-stack capacity.
+
+In an embedded VM, `argv` starts empty unless the host sets it.
+The standalone executable passes command-line entries after its executable
+name through `py_sys_setargv()`, including interpreter flags.
+Do not assume CPython's argument filtering.
+
+This module does not provide `sys.path`, `sys.modules`, or stream objects
+such as `sys.stdout`. Use [host callbacks](../C-API/modules.md) to customize
+imports and output.

+ 32 - 6
docs/modules/time.md

@@ -3,14 +3,40 @@ icon: package
 label: time
 ---
 
-### `time.time()`
+# time
 
-Returns the current time in seconds since the epoch as a floating point number.
+Clock access and a small local-time interface.
 
-### `time.sleep(secs)`
+| Function | Result |
+| --- | --- |
+| `time()` | Seconds since the Unix epoch as a float. |
+| `time_ns()` | Epoch time as integer nanoseconds. |
+| `monotonic()`, `monotonic_ns()` | Platform monotonic clock, in seconds or nanoseconds where supported. |
+| `perf_counter()` | Uses the same clock as `monotonic()`. |
+| `process_time()` | The C library's `clock() / CLOCKS_PER_SEC`; semantics depend on the platform. |
+| `sleep(seconds)` | Wait for a duration. |
+| `localtime()` | Current local time as a `struct_time` object. |
 
-Suspend execution of the calling thread for the given number of seconds.
+```python
+import time
 
-### `time.localtime()`
+start = time.perf_counter()
+total = sum([i * i for i in range(1000)])
+elapsed = time.perf_counter() - start
+print(total, elapsed)
 
-Returns the current struct time as a `struct_time` object.
+now = time.localtime()
+print(now.tm_year, now.tm_mon, now.tm_mday)
+```
+
+`struct_time` exposes `tm_year`, `tm_mon`, `tm_mday`, `tm_hour`,
+`tm_min`, `tm_sec`, `tm_wday`, `tm_yday`, and `tm_isdst`.
+Weekdays start at Monday = 0; day-of-year starts at 1.
+`localtime()` takes no timestamp argument.
+
+The fallback for platforms without a monotonic clock uses wall time, so do not
+assume a monotonic guarantee on every target. `sleep()` currently waits in a
+loop and yields when thread support is enabled; it is not a low-power OS sleep.
+Use your host's frame scheduler or native wait primitive for long idle periods.
+
+Implementation: [time.c](https://github.com/pocketpy/pocketpy/blob/main/src/modules/time.c).

+ 29 - 8
docs/modules/traceback.md

@@ -3,14 +3,35 @@ icon: package
 label: traceback
 ---
 
-### `traceback.print_exc() -> None`
+# traceback
 
-Print the exception currently being handled and its traceback. This also works
-from helper functions called by an exception handler. If no exception is being
-handled, print nothing.
+Report the exception currently being handled by a Python `except` block.
 
-### `traceback.format_exc() -> str | None`
+| Function | Behavior |
+| --- | --- |
+| `print_exc()` | Print the active exception and traceback; return `None`. |
+| `format_exc()` | Return the traceback string, or `None` when no exception is being handled. |
 
-Return the exception currently being handled and its traceback as a string.
-This uses the same exception as `print_exc()`, including inside helper functions
-and nested `try` blocks. Return `None` if no exception is being handled.
+```python
+import traceback
+
+def describe_error():
+    return traceback.format_exc()
+
+try:
+    raise ValueError('invalid level')
+except ValueError:
+    message = describe_error()
+    assert 'ValueError: invalid level' in message
+    print(message)
+
+assert traceback.format_exc() is None
+```
+
+Both functions work in helper functions called from an exception handler and
+inside nested `try` blocks. Outside a handler, `print_exc()` prints nothing.
+There are no `limit`, `file`, or `chain` parameters.
+
+For failures returned to C rather than handled by Python, use
+`py_printexc()` or `py_formatexc()`; see
+[host exception handling](../C-API/execution.md).

+ 25 - 3
docs/modules/typing.md

@@ -3,8 +3,30 @@ icon: package
 label: typing
 ---
 
-Placeholder module for type hints.
+# typing
 
-#### Source code
+A compatibility module for annotations and static-analysis tools. It does not
+enforce types at runtime.
 
-:::code source="../../python/typing.py" :::
+```python
+from typing import TYPE_CHECKING, cast
+
+def total(values: list[int]) -> int:
+    return sum(values)
+
+assert total([1, 2, 3]) == 6
+assert TYPE_CHECKING is False
+assert cast(int, 'unchanged') == 'unchanged'
+```
+
+Common names such as `Any`, `Optional`, `Union`, `Callable`,
+`Iterable`, `TypeVar`, `Literal`, and `Self` are placeholders.
+`cast(type, value)` returns its value unchanged. The `overload`,
+`override`, and `final` decorators also leave their input unchanged.
+
+`Protocol` and `Generic` are aliases of `object`, and `TypedDict` is
+an alias of `dict`. Do not use these names as runtime validators or rely on
+CPython's typing introspection. Keep type-only imports inside
+`if TYPE_CHECKING:` when appropriate.
+
+Available names: [typing.py](https://github.com/pocketpy/pocketpy/blob/main/python/typing.py).

+ 26 - 8
docs/modules/unicodedata.md

@@ -3,13 +3,31 @@ icon: package
 label: unicodedata
 ---
 
-### `unicodedata.east_asian_width(char: str) -> str`
+# unicodedata
 
-Returns the East Asian width of a Unicode character. The width is one of the following values:
+This module provides `east_asian_width(character)`, returning the Unicode
+East Asian width classification of one character.
 
-- `F`: Fullwidth
-- `H`: Halfwidth
-- `N`: Neutral
-- `Na`: Narrow
-- `W`: Wide
-- `A`: Ambiguous
+| Result | Meaning |
+| --- | --- |
+| `F` | Fullwidth |
+| `H` | Halfwidth |
+| `N` | Neutral |
+| `Na` | Narrow |
+| `W` | Wide |
+| `A` | Ambiguous |
+
+```python
+from unicodedata import east_asian_width
+
+assert east_asian_width('A') == 'Na'
+assert east_asian_width('中') == 'W'
+```
+
+The argument must be a string containing exactly one Unicode character.
+A longer string, including a multi-character grapheme, raises `TypeError`.
+
+A width classification is not a complete terminal-layout algorithm:
+combining characters, emoji sequences, and ambiguous-width characters need
+additional handling. This module does not implement Unicode normalization,
+names, or the rest of CPython's `unicodedata` API.

+ 64 - 3
docs/modules/vmath.md

@@ -3,8 +3,69 @@ icon: package
 label: vmath
 ---
 
-Provide vector math operations.
+# vmath
 
-#### Source code
+Native vector, matrix, and color types for game scripts.
 
-:::code source="../../include/typings/vmath.pyi" :::
+| Type | Purpose |
+| --- | --- |
+| `vec2(x, y)`, `vec3(x, y, z)` | Floating-point vectors. |
+| `vec2i(x, y)`, `vec3i(x, y, z)`, `vec4i(x, y, z, w)` | Integer vectors. |
+| `mat3x3(...)` | 3 x 3 matrix, including 2D affine transforms. |
+| `color32(r, g, b, a)` | Four 8-bit color channels, each from 0 to 255. |
+
+Vector components are read-only. Methods such as `with_x()` return a new
+value. Floating vectors use single-precision components, so allow for rounding
+when comparing calculated results.
+
+## Vector calculations
+
+```python
+from vmath import vec2, vec2i
+
+velocity = vec2(3, 4)
+assert velocity.length() == 5.0
+position = vec2(10, 20) + velocity * 2
+assert position == vec2(16, 28)
+assert velocity.with_x(0) == vec2(0, 4)
+
+tile = vec2i(2, 3)
+assert tile + vec2i(1, 0) == vec2i(3, 3)
+```
+
+Floating vectors provide `dot()`, `length()`, `length_squared()`,
+and `normalize()`. Multiplication by another vector is component-wise;
+use `dot()` for a dot product. Integer vectors provide integer arithmetic,
+dot products, and hashing. Vector components can be unpacked by iteration.
+
+For 2D motion, `vec2.rotate(radians)`, `vec2.angle(from_vector, to_vector)`,
+and `vec2.smooth_damp(...)` are available. With a downward screen Y axis,
+positive rotation appears clockwise.
+
+## Matrices and colors
+
+```python
+from vmath import mat3x3, vec2, color32
+
+transform = mat3x3.trs(vec2(10, 20), 0.0, vec2(2, 2))
+assert transform.transform_point(vec2(1, 1)) == vec2(12, 22)
+assert transform.transform_vector(vec2(1, 1)) == vec2(2, 2)
+
+red = color32(255, 0, 0, 255)
+assert red.r == 255
+assert red.with_a(128).a == 128
+```
+
+`trs(translation, rotation, scale)` constructs an affine transform.
+`transform_point()` includes translation; `transform_vector()` does not.
+Matrices support `@`, indexing by `[row, column]`, `determinant()`,
+`inverse()`, `copy()`, and the in-place variants `copy_`/`inverse_`.
+A singular matrix has no inverse.
+
+`rgb(r, g, b)` creates an opaque color. `rgba(r, g, b, a)` uses a float
+alpha in `[0, 1]`, unlike `color32`'s integer alpha.
+Colors also support hex conversion, RGB565 conversion, ANSI coloring, and
+`alpha_blend()`.
+
+Full signatures and type-specific methods:
+[vmath.pyi](https://github.com/pocketpy/pocketpy/blob/main/include/typings/vmath.pyi).

+ 52 - 150
docs/performance.md

@@ -6,153 +6,55 @@ label: Performance
 
 # Performance
 
-Currently, pkpy is as fast as cpython 3.9.
-Performance results for cpython 3.9 are applicable to for pkpy.
-
-Here is a benchmark result of `v1.2.6`.
-Files are located in `benchmarks/`.
-
-## win32 64-bit cpy39
-```
-CPython: 3.9.13 (tags/v3.9.13:6de2ca5, May 17 2022, 16:36:42) [MSC v.1929 64 bit (AMD64)]
-System: 64-bit
-Testing directory: benchmarks/
-> benchmarks/fib.py
-  cpython:  0.986091s (100%)
-  pocketpy: 0.985427s (99.93%)
-> benchmarks/loop_0.py
-  cpython:  0.515685s (100%)
-  pocketpy: 0.344132s (66.73%)
-> benchmarks/loop_1.py
-  cpython:  0.938407s (100%)
-  pocketpy: 0.595634s (63.47%)
-> benchmarks/loop_2.py
-  cpython:  1.188671s (100%)
-  pocketpy: 0.735259s (61.86%)
-> benchmarks/loop_3.py
-  cpython:  4.957218s (100%)
-  pocketpy: 2.314210s (46.68%)
-> benchmarks/primes.py
-  cpython:  9.146332s (100%)
-  pocketpy: 8.507227s (93.01%)
-> benchmarks/recursive.py
-  cpython:  0.044789s (100%)
-  pocketpy: 0.031252s (69.78%)
-> benchmarks/simple.py
-  cpython:  0.516624s (100%)
-  pocketpy: 0.453159s (87.72%)
-> benchmarks/sort.py
-  cpython:  0.929597s (100%)
-  pocketpy: 0.406802s (43.76%)
-> benchmarks/sum.py
-  cpython:  0.047151s (100%)
-  pocketpy: 0.031266s (66.31%)
-ALL TESTS PASSED
-```
-
-## linux 64-bit cpy38
-```
-CPython: 3.8.10 (default, May 26 2023, 14:05:08) [GCC 9.4.0]
-System: 64-bit
-Testing directory: benchmarks/
-> benchmarks/fib.py
-  cpython:  0.739547s (100%)
-  pocketpy: 0.613591s (82.97%)
-> benchmarks/loop_0.py
-  cpython:  0.356003s (100%)
-  pocketpy: 0.224396s (63.03%)
-> benchmarks/loop_1.py
-  cpython:  0.661924s (100%)
-  pocketpy: 0.446577s (67.47%)
-> benchmarks/loop_2.py
-  cpython:  0.937243s (100%)
-  pocketpy: 0.514324s (54.88%)
-> benchmarks/loop_3.py
-  cpython:  3.671752s (100%)
-  pocketpy: 1.876151s (51.10%)
-> benchmarks/primes.py
-  cpython:  7.293947s (100%)
-  pocketpy: 5.427518s (74.41%)
-> benchmarks/recursive.py
-  cpython:  0.021559s (100%)
-  pocketpy: 0.010227s (47.44%)
-> benchmarks/simple.py
-  cpython:  0.408654s (100%)
-  pocketpy: 0.265084s (64.87%)
-> benchmarks/sort.py
-  cpython:  0.372539s (100%)
-  pocketpy: 0.243566s (65.38%)
-> benchmarks/sum.py
-  cpython:  0.021242s (100%)
-  pocketpy: 0.010113s (47.61%)
-ALL TESTS PASSED
-```
-
-## linux 32-bit cpy39
-```
-CPython: 3.9.18 (main, Aug 26 2023, 11:50:23) [GCC 10.3.1 20211027]
-System: 32-bit
-Testing directory: benchmarks/
-> benchmarks/fib.py
-  cpython:  1.967908s (100%)
-  pocketpy: 0.960947s (48.83%)
-> benchmarks/loop_0.py
-  cpython:  1.063461s (100%)
-  pocketpy: 0.396626s (37.30%)
-> benchmarks/loop_1.py
-  cpython:  1.563821s (100%)
-  pocketpy: 0.639663s (40.90%)
-> benchmarks/loop_2.py
-  cpython:  2.626848s (100%)
-  pocketpy: 0.757444s (28.83%)
-> benchmarks/loop_3.py
-  cpython:  13.428345s (100%)
-  pocketpy: 2.852351s (21.24%)
-> benchmarks/primes.py
-  cpython:  18.174904s (100%)
-  pocketpy: 8.423515s (46.35%)
-> benchmarks/recursive.py
-  cpython:  0.025673s (100%)
-  pocketpy: 0.012470s (48.57%)
-> benchmarks/simple.py
-  cpython:  1.042090s (100%)
-  pocketpy: 0.480013s (46.06%)
-> benchmarks/sort.py
-  cpython:  0.989279s (100%)
-  pocketpy: 0.379171s (38.33%)
-> benchmarks/sum.py
-  cpython:  0.024227s (100%)
-  pocketpy: 0.012477s (51.50%)
-ALL TESTS PASSED
-```
-
-See [actions/runs](https://github.com/pocketpy/pocketpy/actions/runs/6511071423/job/17686074263).
-
-## Primes benchmarks
-
-These are the results of the primes benchmark on Intel i5-12400F, WSL (Ubuntu 20.04 LTS).
-
-| name | version | time | file |
-| ---- | ---- | ---- | ---- |
-| c++ | gnu++11 | `0.104s ■□□□□□□□□□□□□□□□` | [benchmarks/primes.cpp](https://github.com/pocketpy/pocketpy/blob/9481d653b60b81f4590a4d48f2be496f6962261e/benchmarks/primes.cpp) |
-| lua | 5.3.3 | `1.576s ■■■■■■■■■□□□□□□□` | [benchmarks/primes.lua](https://github.com/pocketpy/pocketpy/blob/9481d653b60b81f4590a4d48f2be496f6962261e/benchmarks/primes.lua) |
-| pkpy | 1.2.7 | `2.385s ■■■■■■■■■■■■■□□□` | [benchmarks/primes.py](https://github.com/pocketpy/pocketpy/blob/9481d653b60b81f4590a4d48f2be496f6962261e/benchmarks/primes.py) |
-| cpython | 3.8.10 | `2.871s ■■■■■■■■■■■■■■■■` | [benchmarks/primes.py](https://github.com/pocketpy/pocketpy/blob/9481d653b60b81f4590a4d48f2be496f6962261e/benchmarks/primes.py) |
-
-```sh
-$ time lua benchmarks/primes.lua 
-
-real    0m1.576s
-user    0m1.514s
-sys     0m0.060s
-$ time ./main benchmarks/primes.py 
-
-real    0m2.385s
-user    0m2.247s
-sys     0m0.100s
-$ time python benchmarks/primes.py 
-
-real    0m2.871s
-user    0m2.798s
-sys     0m0.060s
-```
+Measure pocketpy with your application's workload, compiler, target hardware,
+and enabled features. Results from one script or an older interpreter version
+do not predict the performance of all Python programs.
+
+## Measure a current build
+
+Use a Release build with optimization and `NDEBUG`. Record the pocketpy
+revision, compiler flags, CPU, OS, and comparison interpreter version.
+Keep inputs identical, run each case several times, and compare medians.
+
+The repository's
+[benchmarks](https://github.com/pocketpy/pocketpy/tree/main/benchmarks)
+cover loops, recursion, sorting, and other small workloads.
+For an application, also measure startup, script/native calls, allocations,
+and the longest frame or request time.
+
+Use [line profiling](features/profiling.md) to locate expensive code, then
+measure elapsed time again without the profiler. Tracing adds overhead.
+
+## Practical optimization choices
+
+- Move frequently repeated native operations into a larger binding call when
+  repeated C/Python boundary crossings dominate.
+- Avoid rebuilding unchanged containers inside a frame loop.
+- Use [vmath](modules/vmath.md) and [array2d](modules/array2d.md) when they fit
+  the data and operations.
+- Consider [GC scheduling](modules/gc.md) if collections cause frame spikes.
+  Manual scheduling also affects memory growth.
+- Use [compute threads](features/threading.md) for independent jobs large enough
+  to justify serialization and thread overhead.
+
+Confirm each change with measurements; none is a universal speedup.
+
+## Historical results
+
+The following **1.2.7** results are retained for context. They are not a
+benchmark of the current 2.x C11 interpreter.
+
+Machine: Intel i5-12400F, WSL with Ubuntu 20.04 LTS. Workload: the
+[primes benchmark at the recorded revision](https://github.com/pocketpy/pocketpy/tree/9481d653b60b81f4590a4d48f2be496f6962261e/benchmarks).
+
+| Implementation | Version / language mode | Elapsed time |
+| --- | --- | --- |
+| C++ | gnu++11 | 0.104 s |
+| Lua | 5.3.3 | 1.576 s |
+| pocketpy | 1.2.7 | 2.385 s |
+| CPython | 3.8.10 | 2.871 s |
+
+Earlier 1.2.6 comparisons across Windows/Linux and 32/64-bit builds are available
+in the [original CI run](https://github.com/pocketpy/pocketpy/actions/runs/6511071423/job/17686074263).
+Use these as historical observations, not as a claim of equivalence to a
+particular CPython release.

+ 96 - 86
docs/quick-start.md

@@ -4,120 +4,130 @@ order: 20
 label: Quick Start
 ---
 
-You have two options to integrate pkpy into your project.
+# Quick start
 
-#### Use CMake (Recommended)
+Use a C11 compiler and CMake 3.20 or newer. On Windows, use an MSVC environment
+with C11 atomics support. C++ bindings additionally require C++17.
 
-Clone the whole repository as a submodule into your project,
-In your CMakelists.txt, add the following lines:
+## 1. Build and run the interpreter
 
-```cmake
-add_subdirectory(pocketpy)
-target_link_libraries(<your_target> pocketpy)
-```
+From a checkout of the repository:
 
-See [CMakeLists.txt](https://github.com/pocketpy/pocketpy/blob/main/CMakeLists.txt) for details.
+```sh
+cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
+cmake --build build --config Release
+```
 
-It is safe to use `main` branch in production if CI badge is green.
+Run `build/main` on a single-configuration build, or
+`.\build\Release\main.exe` with the Visual Studio generator. Starting it without
+arguments opens the REPL; type `exit()` to leave. To run a file:
 
-#### Use the single header file
+```sh
+./build/main hello.py
+```
 
-Download the `pocketpy.h` and `pocketpy.c` on our [GitHub Release](https://github.com/pocketpy/pocketpy/releases) page.
-And `#include` it in your project.
+On Windows:
 
-### Compile flags
+```powershell
+.\build\Release\main.exe hello.py
+```
 
-To compile it with your project, these flags must be set:
+Save this as `hello.py`:
 
-+ `--std=c11` flag must be set
-+ For MSVC, `/utf-8` and `/experimental:c11atomics` flag must be set
-+ `NDEBUG` macro should be defined for release build, or you will get poor performance
+```python
+print('Hello from pocketpy!')
+print(sum([1, 2, 3]))  # 6
+```
 
-### Get prebuilt binaries
+When using the default shared-library build, keep the generated library beside
+the executable. Set `-DPK_BUILD_STATIC_MAIN=ON` to link the interpreter statically.
+For reproducible application builds, select a release tag or a specific commit.
 
-We have prebuilt binaries,
-check them out on our [GitHub Actions](https://github.com/pocketpy/pocketpy/actions/workflows/main.yml).
+## 2. Embed pocketpy with CMake
 
-You can download an artifact there which contains the following files.
+Place pocketpy in a `pocketpy/` subdirectory of your application:
 
+```text
+my_app/
+├── CMakeLists.txt
+├── main.c
+└── pocketpy/
 ```
-├── android
-│   ├── arm64-v8a
-│   │   └── libpocketpy.so
-│   ├── armeabi-v7a
-│   │   └── libpocketpy.so
-│   └── x86_64
-│       └── libpocketpy.so
-├── ios
-│   └── libpocketpy.a
-├── linux
-│   └── x86_64
-│       ├── libpocketpy.so
-│       └── main
-└── windows
-    └── x86_64
-        ├── main.exe
-        └── pocketpy.dll
+
+Use this `CMakeLists.txt`:
+
+```cmake
+cmake_minimum_required(VERSION 3.20)
+project(my_app LANGUAGES C CXX)
+
+add_subdirectory(pocketpy)
+add_executable(my_app main.c)
+target_compile_features(my_app PRIVATE c_std_11)
+target_link_libraries(my_app PRIVATE pocketpy)
+if(MSVC)
+    target_compile_options(my_app PRIVATE /utf-8 /experimental:c11atomics)
+endif()
 ```
 
-### Example
+As a subdirectory, pocketpy builds a static library by default. Its target
+provides the public include path. Build your application with the same
+`cmake -S` and `cmake --build` commands used above.
+
+Save the following complete program as `main.c`:
 
 ```c
 #include "pocketpy.h"
-#include <stdio.h>
-
-static bool int_add(int argc, py_Ref argv) {
-    PY_CHECK_ARGC(2);
-    PY_CHECK_ARG_TYPE(0, tp_int);
-    PY_CHECK_ARG_TYPE(1, tp_int);
-    py_i64 a = py_toint(py_arg(0));
-    py_i64 b = py_toint(py_arg(1));
-    py_newint(py_retval(), a + b);
-    return true;
-}
 
-int main() {
-    // Initialize pocketpy
+int main(void) {
     py_initialize();
 
-    // Hello world!
-    bool ok = py_exec("print('Hello world!')", "<string>", EXEC_MODE, NULL);
-    if(!ok) goto __ERROR;
+    bool ok = py_exec("print('Hello from embedded Python!')",
+                      "hello.py", EXEC_MODE, NULL);
+    if(!ok) py_printexc();
 
-    // Create a list: [1, 2, 3]
-    py_Ref r0 = py_tmpr0();
-    py_newlistn(r0, 3);
-    py_newint(py_list_getitem(r0, 0), 1);
-    py_newint(py_list_getitem(r0, 1), 2);
-    py_newint(py_list_getitem(r0, 2), 3);
+    py_finalize();
+    return ok ? 0 : 1;
+}
+```
 
-    // Eval the sum of the list
-    py_Ref f_sum = py_getbuiltin(py_name("sum"));
-    py_push(f_sum);
-    py_pushnil();
-    py_push(r0);
-    ok = py_vectorcall(1, 0);
-    if(!ok) goto __ERROR;
+`EXEC_MODE` executes statements. The filename appears in tracebacks; `NULL`
+selects the `__main__` module. Always check the result of an API that can raise
+an exception. `py_finalize()` ends the interpreter's lifetime; do not call Python
+APIs or initialize it again afterward.
 
-    printf("Sum of the list: %d\n", (int)py_toint(py_retval()));  // 6
+Next, follow [C bindings](bindings.md) to expose a native function, or
+[C++ bindings](bindings-cpp.md) to bind a C++ library.
 
-    // Bind native `int_add` as a global variable
-    py_newnativefunc(r0, int_add);
-    py_setglobal(py_name("add"), r0);
+## Alternative: the amalgamated files
 
-    // Call `add` in python
-    ok = py_exec("add(3, 7)", "<string>", EVAL_MODE, NULL);
-    if(!ok) goto __ERROR;
+The amalgamated distribution consists of **two files**, `pocketpy.h` and
+`pocketpy.c`. Download a matching pair from
+[Releases](https://github.com/pocketpy/pocketpy/releases), or generate them from a
+checkout using a host Python installation:
 
-    py_i64 res = py_toint(py_retval());
-    printf("Sum of 2 variables: %d\n", (int)res);  // 10
+```sh
+python amalgamate.py
+```
 
-    py_finalize();
-    return 0;
+The generated files are placed in `amalgamated/`. Compile `pocketpy.c` as C11,
+add its directory to your include path, and link it with your application.
+Include `pocketpy.h` from application code; compile the `.c` file only once.
 
-__ERROR:
-    py_printexc();
-    py_finalize();
-    return 1;
-}
-```
+CMake and amalgamated builds have different feature defaults. See
+[build configuration](build.md) for flags, platform libraries, and optional
+modules.
+
+## Prebuilt artifacts
+
+The [build workflow](https://github.com/pocketpy/pocketpy/actions/workflows/main.yml)
+provides artifacts for supported targets. Choose one that matches your OS,
+architecture, and revision. Use headers from the same revision as the binary.
+
+## Common first-run problems
+
+| Symptom | Check |
+| --- | --- |
+| Compiler cannot find `pocketpy.h` | Link the CMake `pocketpy` target, or add the public include directory. |
+| Executable cannot load `pocketpy.dll` | Keep the DLL next to the executable or use a static build. |
+| `ImportError` for a local script | Start in the directory containing your modules; see [module loading](C-API/modules.md). |
+| Release execution is unexpectedly slow | Enable optimization and define `NDEBUG`; see [performance](performance.md). |

+ 6 - 4
docs/retype.yml

@@ -1,5 +1,7 @@
 input: .
 output: .retype
+exclude:
+  - .validation/
 url: https://pocketpy.github.io
 branding:
   title: pocketpy
@@ -11,7 +13,7 @@ meta:
 links:
   - text: "Home"
     icon: home
-    link: ""
+    link: "/"
   - text: "Live Demo"
     icon: play
     link: "https://pocketpy.github.io/static/web/"
@@ -20,13 +22,13 @@ links:
     icon: code
     link: "https://pocketpy.github.io/examples/"
     target: blank
-  - text: "Github"
+  - text: "GitHub"
     icon: mark-github
-    link: https://github.com/blueloveth/pocketpy
+    link: https://github.com/pocketpy/pocketpy
     target: blank
   - text: Discord
     link: https://discord.gg/WWaq72GzXv
     icon: comment-discussion
     target: blank
 footer:
-  copyright: "&copy; Copyright {{ year }} - [blueloveTH](https://github.com/blueloveTH) - All rights reserved."
+  copyright: "&copy; Copyright {{ year }} - [blueloveTH](https://github.com/blueloveTH) - All rights reserved."

+ 0 - 4136
include/pocketpy/common/_log_spline_tbl.h

@@ -1,4136 +0,0 @@
-#pragma once
-
-/* 
-   Copyright (c) 2012,2013   Axel Kohlmeyer <akohlmey@gmail.com> 
-   All rights reserved.
-
-   Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions
-   are met:
-
-   * Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-   * Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-   * Neither the name of the <organization> nor the
-     names of its contributors may be used to endorse or promote products
-     derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-static const double fm_log_dinv =  4.09600000000000000000e+03;
-static const double fm_log_dsq6 =  9.93410746256510361521e-09;
-static const double fm_log_q1[] = {
- 0.00000000000000000000e+00,  2.44110827527362707389e-04,
- 4.88162079501351187181e-04,  7.32153784993847520958e-04,
- 9.76085973055458924752e-04,  1.21995867271553880967e-03,
- 1.46377191298220740885e-03,  1.70752572284237243150e-03,
- 1.95122013126174933748e-03,  2.19485516718488302135e-03,
- 2.43843085953516754485e-03,  2.68194723721486717044e-03,
- 2.92540432910513587689e-03,  3.16880216406604034440e-03,
- 3.41214077093657773554e-03,  3.65542017853469781291e-03,
- 3.89864041565732288852e-03,  4.14180151108036864044e-03,
- 4.38490349355876492948e-03,  4.62794639182647314646e-03,
- 4.87093023459651223300e-03,  5.11385505056097429410e-03,
- 5.35672086839104454742e-03,  5.59952771673702821148e-03,
- 5.84227562422836091405e-03,  6.08496461947363731504e-03,
- 6.32759473106062758641e-03,  6.57016598755629822881e-03,
- 6.81267841750683115359e-03,  7.05513204943764623417e-03,
- 7.29752691185341952063e-03,  7.53986303323810405641e-03,
- 7.78214044205494896028e-03,  8.02435916674652111036e-03,
- 8.26651923573472682816e-03,  8.50862067742082402166e-03,
- 8.75066352018545254299e-03,  8.99264779238864719879e-03,
- 9.23457352236985856697e-03,  9.47644073844797554806e-03,
- 9.71824946892134618193e-03,  9.95999974206778979080e-03,
- 1.02016915861446264696e-02,  1.04433250293886909638e-02,
- 1.06849001000163534858e-02,  1.09264168262235422668e-02,
- 1.11678752361857574343e-02,  1.14092753580580970330e-02,
- 1.16506172199752743718e-02,  1.18919008500516353716e-02,
- 1.21331262763811845856e-02,  1.23742935270375938733e-02,
- 1.26154026300742353600e-02,  1.28564536135241883757e-02,
- 1.30974465054002689457e-02,  1.33383813336950454026e-02,
- 1.35792581263808539993e-02,  1.38200769114098266643e-02,
- 1.40608377167139014102e-02,  1.43015405702048535586e-02,
- 1.45421854997742992094e-02,  1.47827725332937282010e-02,
- 1.50233016986145197225e-02,  1.52637730235679579260e-02,
- 1.55041865359652544787e-02,  1.57445422635975676440e-02,
- 1.59848402342360230988e-02,  1.62250804756317243416e-02,
- 1.64652630155157908565e-02,  1.67053878815993511742e-02,
- 1.69454551015735914443e-02,  1.71854647031097450272e-02,
- 1.74254167138591341268e-02,  1.76653111614531801998e-02,
- 1.79051480735034213021e-02,  1.81449274776015329058e-02,
- 1.83846494013193521855e-02,  1.86243138722088884263e-02,
- 1.88639209178023438407e-02,  1.91034705656121447936e-02,
- 1.93429628431309348635e-02,  1.95823977778316234144e-02,
- 1.98217753971673821267e-02,  2.00610957285716796916e-02,
- 2.03003587994582852805e-02,  2.05395646372212997699e-02,
- 2.07787132692351730889e-02,  2.10178047228547111580e-02,
- 2.12568390254151175223e-02,  2.14958162042319829432e-02,
- 2.17347362866013270322e-02,  2.19735992997996155973e-02,
- 2.22124052710837606439e-02,  2.24511542276911585381e-02,
- 2.26898461968397004151e-02,  2.29284812057277964659e-02,
- 2.31670592815343794058e-02,  2.34055804514189426391e-02,
- 2.36440447425215437283e-02,  2.38824521819628390884e-02,
- 2.41208027968440805178e-02,  2.43590966142471533618e-02,
- 2.45973336612345834518e-02,  2.48355139648495648608e-02,
- 2.50736375521159599034e-02,  2.53117044500383477079e-02,
- 2.55497146856020138084e-02,  2.57876682857729813692e-02,
- 2.60255652774980320019e-02,  2.62634056877047161738e-02,
- 2.65011895433013774936e-02,  2.67389168711771700593e-02,
- 2.69765876982020758046e-02,  2.72142020512269183774e-02,
- 2.74517599570833874256e-02,  2.76892614425840594139e-02,
- 2.79267065345224080319e-02,  2.81640952596728215418e-02,
- 2.84014276447906305334e-02,  2.86387037166121183329e-02,
- 2.88759235018545418194e-02,  2.91130870272161487722e-02,
- 2.93501943193761917483e-02,  2.95872454049949593080e-02,
- 2.98242403107137760143e-02,  3.00611790631550336583e-02,
- 3.02980616889222051369e-02,  3.05348882145998617998e-02,
- 3.07716586667536873279e-02,  3.10083730719305089574e-02,
- 3.12450314566582974807e-02,  3.14816338474461984709e-02,
- 3.17181802707845392209e-02,  3.19546707531448703765e-02,
- 3.21911053209799416508e-02,  3.24274840007237608042e-02,
- 3.26638068187915936447e-02,  3.29000738015799848446e-02,
- 3.31362849754667510016e-02,  3.33724403668110569665e-02,
- 3.36085400019533672711e-02,  3.38445839072155085780e-02,
- 3.40805721089006696811e-02,  3.43165046332934153828e-02,
- 3.45523815066597350665e-02,  3.47882027552470010634e-02,
- 3.50239684052840449802e-02,  3.52596784829811438211e-02,
- 3.54953330145300408049e-02,  3.57309320261039800593e-02,
- 3.59664755438576927427e-02,  3.62019635939274456171e-02,
- 3.64373962024310479868e-02,  3.66727733954678516981e-02,
- 3.69080951991187997119e-02,  3.71433616394464122257e-02,
- 3.73785727424948352460e-02,  3.76137285342898197715e-02,
- 3.78488290408387842434e-02,  3.80838742881307937282e-02,
- 3.83188643021366015518e-02,  3.85537991088086354208e-02,
- 3.87886787340810668123e-02,  3.90235032038697762791e-02,
- 3.92582725440723950827e-02,  3.94929867805683190718e-02,
- 3.97276459392187364372e-02,  3.99622500458666138345e-02,
- 4.01967991263367518950e-02,  4.04312932064357782869e-02,
- 4.06657323119521615928e-02,  4.09001164686562529438e-02,
- 4.11344457023002721408e-02,  4.13687200386183492884e-02,
- 4.16029395033265247950e-02,  4.18371041221227840667e-02,
- 4.20712139206870575081e-02,  4.23052689246812343993e-02,
- 4.25392691597492184075e-02,  4.27732146515168790146e-02,
- 4.30071054255921278453e-02,  4.32409415075649117277e-02,
- 4.34747229230072265715e-02,  4.37084496974731243069e-02,
- 4.39421218564987614563e-02,  4.41757394256023921963e-02,
- 4.44093024302843961126e-02,  4.46428108960272643224e-02,
- 4.48762648482956758023e-02,  4.51096643125364488158e-02,
- 4.53430093141786172417e-02,  4.55762998786333820012e-02,
- 4.58095360312942012637e-02,  4.60427177975367488139e-02,
- 4.62758452027189418065e-02,  4.65089182721809893395e-02,
- 4.67419370312453785754e-02,  4.69749015052168886197e-02,
- 4.72078117193826252151e-02,  4.74406676990120346193e-02,
- 4.76734694693569036050e-02,  4.79062170556513941544e-02,
- 4.81389104831120573369e-02,  4.83715497769378263704e-02,
- 4.86041349623100790711e-02,  4.88366660643926031593e-02,
- 4.90691431083316448314e-02,  4.93015661192559226378e-02,
- 4.95339351222766274829e-02,  4.97662501424874642586e-02,
- 4.99985112049646240884e-02,  5.02307183347668675943e-02,
- 5.04628715569354693860e-02,  5.06949708964942874490e-02,
- 5.09270163784497562065e-02,  5.11590080277909073359e-02,
- 5.13909458694893697683e-02,  5.16228299284994252005e-02,
- 5.18546602297579733998e-02,  5.20864367981846085320e-02,
- 5.23181596586815636507e-02,  5.25498288361337939634e-02,
- 5.27814443554089490762e-02,  5.30130062413574076885e-02,
- 5.32445145188122845314e-02,  5.34759692125894581238e-02,
- 5.37073703474875707720e-02,  5.39387179482880632642e-02,
- 5.41700120397551818097e-02,  5.44012526466359849775e-02,
- 5.46324397936603645132e-02,  5.48635735055410730943e-02,
- 5.50946538069737382082e-02,  5.53256807226368482744e-02,
- 5.55566542771918150945e-02,  5.57875744952829599743e-02,
- 5.60184414015375206630e-02,  5.62492550205656929863e-02,
- 5.64800153769606447240e-02,  5.67107224952985156108e-02,
- 5.69413764001384242741e-02,  5.71719771160225237461e-02,
- 5.74025246674759737076e-02,  5.76330190790069890605e-02,
- 5.78634603751068329891e-02,  5.80938485802498377764e-02,
- 5.83241837188934394987e-02,  5.85544658154781641479e-02,
- 5.87846948944276553872e-02,  5.90148709801487023063e-02,
- 5.92449940970312324828e-02,  5.94750642694483605544e-02,
- 5.97050815217563465853e-02,  5.99350458782946862724e-02,
- 6.01649573633860623723e-02,  6.03948160013363932741e-02,
- 6.06246218164348399382e-02,  6.08543748329538267128e-02,
- 6.10840750751490343951e-02,  6.13137225672594557424e-02,
- 6.15433173335073746557e-02,  6.17728593980984008738e-02,
- 6.20023487852214699734e-02,  6.22317855190488850026e-02,
- 6.24611696237362887252e-02,  6.26905011234227399486e-02,
- 6.29197800422306580126e-02,  6.31490064042658921784e-02,
- 6.33781802336177285673e-02,  6.36073015543588693443e-02,
- 6.38363703905454882293e-02,  6.40653867662172443742e-02,
- 6.42943507053972546084e-02,  6.45232622320921628267e-02,
- 6.47521213702921261124e-02,  6.49809281439708147365e-02,
- 6.52096825770854676696e-02,  6.54383846935768787034e-02,
- 6.56670345173694380847e-02,  6.58956320723710908815e-02,
- 6.61241773824734202503e-02,  6.63526704715516196798e-02,
- 6.65811113634645346249e-02,  6.68095000820546486286e-02,
- 6.70378366511480972001e-02,  6.72661210945547510809e-02,
- 6.74943534360681191009e-02,  6.77225336994654592004e-02,
- 6.79506619085077506748e-02,  6.81787380869397080518e-02,
- 6.84067622584897949700e-02,  6.86347344468702658116e-02,
- 6.88626546757771518248e-02,  6.90905229688902888796e-02,
- 6.93183393498733174676e-02,  6.95461038423737382130e-02,
- 6.97738164700228424842e-02,  7.00014772564358511708e-02,
- 7.02290862252118036624e-02,  7.04566433999336549920e-02,
- 7.06841488041682619592e-02,  7.09116024614664108849e-02,
- 7.11390043953627759787e-02,  7.13663546293760442385e-02,
- 7.15936531870088183060e-02,  7.18209000917476997339e-02,
- 7.20480953670632612296e-02,  7.22752390364101160447e-02,
- 7.25023311232268624638e-02,  7.27293716509361670708e-02,
- 7.29563606429447231161e-02,  7.31832981226432782718e-02,
- 7.34101841134067040207e-02,  7.36370186385939123896e-02,
- 7.38638017215479669719e-02,  7.40905333855960135381e-02,
- 7.43172136540493771806e-02,  7.45438425502034929249e-02,
- 7.47704200973380028739e-02,  7.49969463187166729412e-02,
- 7.52234212375875316292e-02,  7.54498448771827451287e-02,
- 7.56762172607187699747e-02,  7.59025384113962420241e-02,
- 7.61288083524001013558e-02,  7.63550271068994951262e-02,
- 7.65811946980478885916e-02,  7.68073111489830512300e-02,
- 7.70333764828270151082e-02,  7.72593907226861720261e-02,
- 7.74853538916512596391e-02,  7.77112660127973059465e-02,
- 7.79371271091837819478e-02,  7.81629372038544767420e-02,
- 7.83886963198376085504e-02,  7.86144044801457830829e-02,
- 7.88400617077760212936e-02,  7.90656680257098148923e-02,
- 7.92912234569130569550e-02,  7.95167280243361529468e-02,
- 7.97421817509139374547e-02,  7.99675846595657713323e-02,
- 8.01929367731955139442e-02,  8.04182381146915231662e-02,
- 8.06434887069267247739e-02,  8.08686885727585569317e-02,
- 8.10938377350290395817e-02,  8.13189362165647605662e-02,
- 8.15439840401769033829e-02,  8.17689812286612333070e-02,
- 8.19939278047981806585e-02,  8.22188237913527297795e-02,
- 8.24436692110745855677e-02,  8.26684640866980763318e-02,
- 8.28932084409421815474e-02,  8.31179022965106151233e-02,
- 8.33425456760917421350e-02,  8.35671386023586620917e-02,
- 8.37916810979692228134e-02,  8.40161731855659649204e-02,
- 8.42406148877762328553e-02,  8.44650062272121054940e-02,
- 8.46893472264704516572e-02,  8.49136379081329439877e-02,
- 8.51378782947660450731e-02,  8.53620684089210490786e-02,
- 8.55862082731341095032e-02,  8.58102979099261975460e-02,
- 8.60343373418031576172e-02,  8.62583265912557073385e-02,
- 8.64822656807594791761e-02,  8.67061546327749649299e-02,
- 8.69299934697476128775e-02,  8.71537822141077861415e-02,
- 8.73775208882708043223e-02,  8.76012095146369157428e-02,
- 8.78248481155913807150e-02,  8.80484367135044021513e-02,
- 8.82719753307312088308e-02,  8.84954639896120276443e-02,
- 8.87189027124721391049e-02,  8.89422915216218218371e-02,
- 8.91656304393564219657e-02,  8.93889194879563669938e-02,
- 8.96121586896871380468e-02,  8.98353480667993115061e-02,
- 9.00584876415286006424e-02,  9.02815774360957862266e-02,
- 9.05046174727068136745e-02,  9.07276077735527791690e-02,
- 9.09505483608099157822e-02,  9.11734392566396351087e-02,
- 9.13962804831885272661e-02,  9.16190720625884025274e-02,
- 9.18418140169562635666e-02,  9.20645063683943332133e-02,
- 9.22871491389900822089e-02,  9.25097423508162430839e-02,
- 9.27322860259307685249e-02,  9.29547801863769285191e-02,
- 9.31772248541832964763e-02,  9.33996200513636798402e-02,
- 9.36219657999172727436e-02,  9.38442621218285727425e-02,
- 9.40665090390674085707e-02,  9.42887065735889817741e-02,
- 9.45108547473338389544e-02,  9.47329535822279272805e-02,
- 9.49550031001825944887e-02,  9.51770033230945750047e-02,
- 9.53989542728460315768e-02,  9.56208559713045552764e-02,
- 9.58427084403232071308e-02,  9.60645117017404626125e-02,
- 9.62862657773803226613e-02,  9.65079706890522165397e-02,
- 9.67296264585511128553e-02,  9.69512331076574779276e-02,
- 9.71727906581372896655e-02,  9.73942991317420792008e-02,
- 9.76157585502089170104e-02,  9.78371689352604545498e-02,
- 9.80585303086048687415e-02,  9.82798426919359729981e-02,
- 9.85011061069331617102e-02,  9.87223205752614380026e-02,
- 9.89434861185714414900e-02,  9.91646027584994482762e-02,
- 9.93856705166673570773e-02,  9.96066894146827863654e-02,
- 9.98276594741389772247e-02,  1.00048580716614876618e-01,
- 1.00269453163675151264e-01,  1.00490276836870159882e-01,
- 1.00711051757735994827e-01,  1.00931777947794482087e-01,
- 1.01152455428553222916e-01,  1.01373084221505552205e-01,
- 1.01593664348130593988e-01,  1.01814195829893261447e-01,
- 1.02034678688244284661e-01,  1.02255112944620182858e-01,
- 1.02475498620443319919e-01,  1.02695835737121890507e-01,
- 1.02916124316049961696e-01,  1.03136364378607417458e-01,
- 1.03356555946160069692e-01,  1.03576699040059588830e-01,
- 1.03796793681643559348e-01,  1.04016839892235493648e-01,
- 1.04236837693144804295e-01,  1.04456787105666845661e-01,
- 1.04676688151082941669e-01,  1.04896540850660371924e-01,
- 1.05116345225652385587e-01,  1.05336101297298229129e-01,
- 1.05555809086823132459e-01,  1.05775468615438378306e-01,
- 1.05995079904341218957e-01,  1.06214642974714987278e-01,
- 1.06434157847729041202e-01,  1.06653624544538833119e-01,
- 1.06873043086285854364e-01,  1.07092413494097690729e-01,
- 1.07311735789088050219e-01,  1.07531009992356721416e-01,
- 1.07750236124989628994e-01,  1.07969414208058833715e-01,
- 1.08188544262622546310e-01,  1.08407626309725127478e-01,
- 1.08626660370397129518e-01,  1.08845646465655254698e-01,
- 1.09064584616502438519e-01,  1.09283474843927794207e-01,
- 1.09502317168906668221e-01,  1.09721111612400654134e-01,
- 1.09939858195357564874e-01,  1.10158556938711474360e-01,
- 1.10377207863382731379e-01,  1.10595810990277973462e-01,
- 1.10814366340290113011e-01,  1.11032873934298378926e-01,
- 1.11251333793168288855e-01,  1.11469745937751746334e-01,
- 1.11688110388886929769e-01,  1.11906427167398417333e-01,
- 1.12124696294097117577e-01,  1.12342917789780338822e-01,
- 1.12561091675231775278e-01,  1.12779217971221507044e-01,
- 1.12997296698506041746e-01,  1.13215327877828272896e-01,
- 1.13433311529917590921e-01,  1.13651247675489786015e-01,
- 1.13869136335247131409e-01,  1.14086977529878327853e-01,
- 1.14304771280058628524e-01,  1.14522517606449728000e-01,
- 1.14740216529699845527e-01,  1.14957868070443711139e-01,
- 1.15175472249302593419e-01,  1.15393029086884285617e-01,
- 1.15610538603783147282e-01,  1.15828000820580104269e-01,
- 1.16045415757842648730e-01,  1.16262783436124880754e-01,
- 1.16480103875967480609e-01,  1.16697377097897722620e-01,
- 1.16914603122429544557e-01,  1.17131781970063506004e-01,
- 1.17348913661286788357e-01,  1.17565998216573264212e-01,
- 1.17783035656383455736e-01,  1.18000026001164562417e-01,
- 1.18216969271350488824e-01,  1.18433865487361844604e-01,
- 1.18650714669605930607e-01,  1.18867516838476808272e-01,
- 1.19084272014355257996e-01,  1.19300980217608820766e-01,
- 1.19517641468591770404e-01,  1.19734255787645210711e-01,
- 1.19950823195096950569e-01,  1.20167343711261670469e-01,
- 1.20383817356440825375e-01,  1.20600244150922672470e-01,
- 1.20816624114982326677e-01,  1.21032957268881732893e-01,
- 1.21249243632869679876e-01,  1.21465483227181855752e-01,
- 1.21681676072040778624e-01,  1.21897822187655879844e-01,
- 1.22113921594223476252e-01,  1.22329974311926811814e-01,
- 1.22545980360936043740e-01,  1.22761939761408242489e-01,
- 1.22977852533487461151e-01,  1.23193718697304666065e-01,
- 1.23409538272977806206e-01,  1.23625311280611813181e-01,
- 1.23841037740298615111e-01,  1.24056717672117122753e-01,
- 1.24272351096133243376e-01,  1.24487938032399964028e-01,
- 1.24703478500957240516e-01,  1.24918972521832094547e-01,
- 1.25134420115038641486e-01,  1.25349821300578007088e-01,
- 1.25565176098438396890e-01,  1.25780484528595165594e-01,
- 1.25995746611010733806e-01,  1.26210962365634615789e-01,
- 1.26426131812403447219e-01,  1.26641254971241012939e-01,
- 1.26856331862058274718e-01,  1.27071362504753287981e-01,
- 1.27286346919211340589e-01,  1.27501285125304814061e-01,
- 1.27716177142893322349e-01,  1.27931022991823739599e-01,
- 1.28145822691930033610e-01,  1.28360576263033487887e-01,
- 1.28575283724942590613e-01,  1.28789945097453034650e-01,
- 1.29004560400347856319e-01,  1.29219129653397241109e-01,
- 1.29433652876358717965e-01,  1.29648130088977159291e-01,
- 1.29862561310984586660e-01,  1.30076946562100476124e-01,
- 1.30291285862031563925e-01,  1.30505579230471902008e-01,
- 1.30719826687102885776e-01,  1.30934028251593309600e-01,
- 1.31148183943599283552e-01,  1.31362293782764316674e-01,
- 1.31576357788719261466e-01,  1.31790375981082452661e-01,
- 1.32004348379459540697e-01,  1.32218275003443658244e-01,
- 1.32432155872615309189e-01,  1.32645991006542507407e-01,
- 1.32859780424780610231e-01,  1.33073524146872568252e-01,
- 1.33287222192348703276e-01,  1.33500874580726874852e-01,
- 1.33714481331512369255e-01,  1.33928042464198038264e-01,
- 1.34141557998264243645e-01,  1.34355027953178857159e-01,
- 1.34568452348397260554e-01,  1.34781831203362401084e-01,
- 1.34995164537504819258e-01,  1.35208452370242593332e-01,
- 1.35421694720981339310e-01,  1.35634891609114321964e-01,
- 1.35848043054022371567e-01,  1.36061149075073939407e-01,
- 1.36274209691625097784e-01,  1.36487224923019567768e-01,
- 1.36700194788588663686e-01,  1.36913119307651376388e-01,
- 1.37125998499514401008e-01,  1.37338832383471998178e-01,
- 1.37551620978806243834e-01,  1.37764364304786807169e-01,
- 1.37977062380671117170e-01,  1.38189715225704279344e-01,
- 1.38402322859119131238e-01,  1.38614885300136297941e-01,
- 1.38827402567964081070e-01,  1.39039874681798569789e-01,
- 1.39252301660823613050e-01,  1.39464683524210875110e-01,
- 1.39677020291119724504e-01,  1.39889311980697400584e-01,
- 1.40101558612078930244e-01,  1.40313760204387127928e-01,
- 1.40525916776732706648e-01,  1.40738028348214166963e-01,
- 1.40950094937917824733e-01,  1.41162116564917949901e-01,
- 1.41374093248276627710e-01,  1.41586025007043814217e-01,
- 1.41797911860257336292e-01,  1.42009753826943030397e-01,
- 1.42221550926114520541e-01,  1.42433303176773412568e-01,
- 1.42645010597909210892e-01,  1.42856673208499401762e-01,
- 1.43068291027509425506e-01,  1.43279864073892648779e-01,
- 1.43491392366590420071e-01,  1.43702875924532069707e-01,
- 1.43914314766634937603e-01,  1.44125708911804373269e-01,
- 1.44337058378933680292e-01,  1.44548363186904282873e-01,
- 1.44759623354585531541e-01,  1.44970838900834897434e-01,
- 1.45182009844497889040e-01,  1.45393136204408079948e-01,
- 1.45604217999387053339e-01,  1.45815255248244596276e-01,
- 1.46026247969778477653e-01,  1.46237196182774614739e-01,
- 1.46448099906007073168e-01,  1.46658959158237983678e-01,
- 1.46869773958217680887e-01,  1.47080544324684536761e-01,
- 1.47291270276365154901e-01,  1.47501951831974315033e-01,
- 1.47712589010214945251e-01,  1.47923181829778122021e-01,
- 1.48133730309343181197e-01,  1.48344234467577607006e-01,
- 1.48554694323137143064e-01,  1.48765109894665709112e-01,
- 1.48975481200795512038e-01,  1.49185808260146962612e-01,
- 1.49396091091328730993e-01,  1.49606329712937774490e-01,
- 1.49816524143559282045e-01,  1.50026674401766757505e-01,
- 1.50236780506121964107e-01,  1.50446842475175063258e-01,
- 1.50656860327464364735e-01,  1.50866834081516687505e-01,
- 1.51076763755846998905e-01,  1.51286649368958775463e-01,
- 1.51496490939343725346e-01,  1.51706288485481954886e-01,
- 1.51916042025841968588e-01,  1.52125751578880641368e-01,
- 1.52335417163043190802e-01,  1.52545038796763288147e-01,
- 1.52754616498463030583e-01,  1.52964150286552857949e-01,
- 1.53173640179431691521e-01,  1.53383086195486906256e-01,
- 1.53592488353094303033e-01,  1.53801846670618136415e-01,
- 1.54011161166411142398e-01,  1.54220431858814510662e-01,
- 1.54429658766157940075e-01,  1.54638841906759666456e-01,
- 1.54847981298926323790e-01,  1.55057076960953166278e-01,
- 1.55266128911123957312e-01,  1.55475137167710913966e-01,
- 1.55684101748974929036e-01,  1.55893022673165321246e-01,
- 1.56101899958520057288e-01,  1.56310733623265640801e-01,
- 1.56519523685617195641e-01,  1.56728270163778410362e-01,
- 1.56936973075941565980e-01,  1.57145632440287563725e-01,
- 1.57354248274985952794e-01,  1.57562820598194874844e-01,
- 1.57771349428061147258e-01,  1.57979834782720207631e-01,
- 1.58188276680296169285e-01,  1.58396675138901821267e-01,
- 1.58605030176638572836e-01,  1.58813341811596647757e-01,
- 1.59021610061854806739e-01,  1.59229834945480652753e-01,
- 1.59438016480530436736e-01,  1.59646154685049140864e-01,
- 1.59854249577070506305e-01,  1.60062301174616977706e-01,
- 1.60270309495699786462e-01,  1.60478274558318922960e-01,
- 1.60686196380463164335e-01,  1.60894074980109991202e-01,
- 1.61101910375225781946e-01,  1.61309702583765646189e-01,
- 1.61517451623673535810e-01,  1.61725157512882217192e-01,
- 1.61932820269313243466e-01,  1.62140439910877065532e-01,
- 1.62348016455472948794e-01,  1.62555549920989028667e-01,
- 1.62763040325302282829e-01,  1.62970487686278558970e-01,
- 1.63177892021772658060e-01,  1.63385253349628167818e-01,
- 1.63592571687677657000e-01,  1.63799847053742592129e-01,
- 1.64007079465633337501e-01,  1.64214268941149182934e-01,
- 1.64421415498078399287e-01,  1.64628519154198182939e-01,
- 1.64835579927274655798e-01,  1.65042597835062948564e-01,
- 1.65249572895307172971e-01,  1.65456505125740366280e-01,
- 1.65663394544084602300e-01,  1.65870241168050991387e-01,
- 1.66077045015339569423e-01,  1.66283806103639492102e-01,
- 1.66490524450628840647e-01,  1.66697200073974843848e-01,
- 1.66903832991333683777e-01,  1.67110423220350634566e-01,
- 1.67316970778660090158e-01,  1.67523475683885425536e-01,
- 1.67729937953639163251e-01,  1.67936357605522890157e-01,
- 1.68142734657127340681e-01,  1.68349069126032285793e-01,
- 1.68555361029806671791e-01,  1.68761610386008564788e-01,
- 1.68967817212185178466e-01,  1.69173981525872818565e-01,
- 1.69380103344597049420e-01,  1.69586182685872471909e-01,
- 1.69792219567202973263e-01,  1.69998214006081560523e-01,
- 1.70204166019990471570e-01,  1.70410075626401119608e-01,
- 1.70615942842774093169e-01,  1.70821767686559267130e-01,
- 1.71027550175195747206e-01,  1.71233290326111786683e-01,
- 1.71438988156724952949e-01,  1.71644643684442071985e-01,
- 1.71850256926659228363e-01,  1.72055827900761737492e-01,
- 1.72261356624124201131e-01,  1.72466843114110590651e-01,
- 1.72672287388074080505e-01,  1.72877689463357187005e-01,
- 1.73083049357291768322e-01,  1.73288367087198941219e-01,
- 1.73493642670389247584e-01,  1.73698876124162460144e-01,
- 1.73904067465807832260e-01,  1.74109216712603848132e-01,
- 1.74314323881818417084e-01,  1.74519388990708873566e-01,
- 1.74724412056521866132e-01,  1.74929393096493468462e-01,
- 1.75134332127849151606e-01,  1.75339229167803783982e-01,
- 1.75544084233561659136e-01,  1.75748897342316551251e-01,
- 1.75953668511251576367e-01,  1.76158397757539414430e-01,
- 1.76363085098342059487e-01,  1.76567730550811097245e-01,
- 1.76772334132087538539e-01,  1.76976895859301847080e-01,
- 1.77181415749573994978e-01,  1.77385893820013462729e-01,
- 1.77590330087719266983e-01,  1.77794724569779849510e-01,
- 1.77999077283273271499e-01,  1.78203388245267047019e-01,
- 1.78407657472818309552e-01,  1.78611884982973673219e-01,
- 1.78816070792769343800e-01,  1.79020214919231090978e-01,
- 1.79224317379374276094e-01,  1.79428378190203796638e-01,
- 1.79632397368714169517e-01,  1.79836374931889531048e-01,
- 1.80040310896703609211e-01,  1.80244205280119751400e-01,
- 1.80448058099090896667e-01,  1.80651869370559686745e-01,
- 1.80855639111458355028e-01,  1.81059367338708782080e-01,
- 1.81263054069222551146e-01,  1.81466699319900892640e-01,
- 1.81670303107634684148e-01,  1.81873865449304533692e-01,
- 1.82077386361780724222e-01,  1.82280865861923213611e-01,
- 1.82484303966581717926e-01,  1.82687700692595655916e-01,
- 1.82891056056794149010e-01,  1.83094370075996104585e-01,
- 1.83297642767010077192e-01,  1.83500874146634490591e-01,
- 1.83704064231657471229e-01,  1.83907213038856875986e-01,
- 1.84110320585000403204e-01,  1.84313386886845537171e-01,
- 1.84516411961139520370e-01,  1.84719395824619381230e-01,
- 1.84922338494011989640e-01,  1.85125239986034056949e-01,
- 1.85328100317392080454e-01,  1.85530919504782398910e-01,
- 1.85733697564891192533e-01,  1.85936434514394538509e-01,
- 1.86139130369958299971e-01,  1.86341785148238237024e-01,
- 1.86544398865880034499e-01,  1.86746971539519163175e-01,
- 1.86949503185781101822e-01,  1.87151993821281115160e-01,
- 1.87354443462624475902e-01,  1.87556852126406298220e-01,
- 1.87759219829211676522e-01,  1.87961546587615574433e-01,
- 1.88163832418182991324e-01,  1.88366077337468768027e-01,
- 1.88568281362017808878e-01,  1.88770444508364887426e-01,
- 1.88972566793034812971e-01,  1.89174648232542347293e-01,
- 1.89376688843392260164e-01,  1.89578688642079329352e-01,
- 1.89780647645088312858e-01,  1.89982565868893976679e-01,
- 1.90184443329961150315e-01,  1.90386280044744643503e-01,
- 1.90588076029689357238e-01,  1.90789831301230172755e-01,
- 1.90991545875792090303e-01,  1.91193219769790145879e-01,
- 1.91394852999629466739e-01,  1.91596445581705188133e-01,
- 1.91797997532402592080e-01,  1.91999508868097079617e-01,
- 1.92200979605154115282e-01,  1.92402409759929254873e-01,
- 1.92603799348768200961e-01,  1.92805148388006802884e-01,
- 1.93006456893970973487e-01,  1.93207724882976855652e-01,
- 1.93408952371330711273e-01,  1.93610139375328893507e-01,
- 1.93811285911258013304e-01,  1.94012391995394828381e-01,
- 1.94213457644006270986e-01,  1.94414482873349420133e-01,
- 1.94615467699671668145e-01,  1.94816412139210470844e-01,
- 1.95017316208193597360e-01,  1.95218179922839019103e-01,
- 1.95419003299354882008e-01,  1.95619786353939673074e-01,
- 1.95820529102782026065e-01,  1.96021231562060860298e-01,
- 1.96221893747945352882e-01,  1.96422515676594994227e-01,
- 1.96623097364159477030e-01,  1.96823638826778835043e-01,
- 1.97024140080583359813e-01,  1.97224601141693656192e-01,
- 1.97425022026220642335e-01,  1.97625402750265521945e-01,
- 1.97825743329919867541e-01,  1.98026043781265564947e-01,
- 1.98226304120374813289e-01,  1.98426524363310180510e-01,
- 1.98626704526124575612e-01,  1.98826844624861304167e-01,
- 1.99026944675553985054e-01,  1.99227004694226633719e-01,
- 1.99427024696893717692e-01,  1.99627004699559990053e-01,
- 1.99826944718220655961e-01,  2.00026844768861317148e-01,
- 2.00226704867458055181e-01,  2.00426525029977237180e-01,
- 2.00626305272375821120e-01,  2.00826045610601050528e-01,
- 2.01025746060590732034e-01,  2.01225406638273096593e-01,
- 2.01425027359566771734e-01,  2.01624608240380948088e-01,
- 2.01824149296615212856e-01,  2.02023650544159688591e-01,
- 2.02223111998894977681e-01,  2.02422533676692190108e-01,
- 2.02621915593412915690e-01,  2.02821257764909251842e-01,
- 2.03020560207023886834e-01,  2.03219822935589961022e-01,
- 2.03419045966431177863e-01,  2.03618229315361776166e-01,
- 2.03817372998186613353e-01,  2.04016477030700998929e-01,
- 2.04215541428690888770e-01,  2.04414566207932774100e-01,
- 2.04613551384193764759e-01,  2.04812496973231533692e-01,
- 2.05011402990794316947e-01,  2.05210269452621052455e-01,
- 2.05409096374441185739e-01,  2.05607883771974836451e-01,
- 2.05806631660932742856e-01,  2.06005340057016289590e-01,
- 2.06204008975917452151e-01,  2.06402638433318963429e-01,
- 2.06601228444894063907e-01,  2.06799779026306806973e-01,
- 2.06998290193211781363e-01,  2.07196761961254388718e-01,
- 2.07395194346070593783e-01,  2.07593587363287118697e-01,
- 2.07791941028521415236e-01,  2.07990255357381581547e-01,
- 2.08188530365466473171e-01,  2.08386766068365619775e-01,
- 2.08584962481659336175e-01,  2.08783119620918666826e-01,
- 2.08981237501705385817e-01,  2.09179316139571996880e-01,
- 2.09377355550061788891e-01,  2.09575355748708863635e-01,
- 2.09773316751038024774e-01,  2.09971238572564861125e-01,
- 2.10169121228795829914e-01,  2.10366964735228090255e-01,
- 2.10564769107349641919e-01,  2.10762534360639325337e-01,
- 2.10960260510566738335e-01,  2.11157947572592374907e-01,
- 2.11355595562167514201e-01,  2.11553204494734276020e-01,
- 2.11750774385725648585e-01,  2.11948305250565460778e-01,
- 2.12145797104668409894e-01,  2.12343249963440033889e-01,
- 2.12540663842276822404e-01,  2.12738038756566050225e-01,
- 2.12935374721685971577e-01,  2.13132671753005653592e-01,
- 2.13329929865885142837e-01,  2.13527149075675354295e-01,
- 2.13724329397718126877e-01,  2.13921470847346278932e-01,
- 2.14118573439883469467e-01,  2.14315637190644364685e-01,
- 2.14512662114934554713e-01,  2.14709648228050609120e-01,
- 2.14906595545280021398e-01,  2.15103504081901292233e-01,
- 2.15300373853183873996e-01,  2.15497204874388170737e-01,
- 2.15693997160765676968e-01,  2.15890750727558783373e-01,
- 2.16087465590000943338e-01,  2.16284141763316617446e-01,
- 2.16480779262721245715e-01,  2.16677378103421303113e-01,
- 2.16873938300614355068e-01,  2.17070459869488946447e-01,
- 2.17266942825224712577e-01,  2.17463387182992295976e-01,
- 2.17659792957953429626e-01,  2.17856160165260909212e-01,
- 2.18052488820058593122e-01,  2.18248778937481485718e-01,
- 2.18445030532655570799e-01,  2.18641243620698005889e-01,
- 2.18837418216717038977e-01,  2.19033554335812036262e-01,
- 2.19229651993073426652e-01,  2.19425711203582840536e-01,
- 2.19621731982412998763e-01,  2.19817714344627740397e-01,
- 2.20013658305282105987e-01,  2.20209563879422226540e-01,
- 2.20405431082085434547e-01,  2.20601259928300208468e-01,
- 2.20797050433086200494e-01,  2.20992802611454264294e-01,
- 2.21188516478406399512e-01,  2.21384192048935862784e-01,
- 2.21579829338027028962e-01,  2.21775428360655529891e-01,
- 2.21970989131788226656e-01,  2.22166511666383154067e-01,
- 2.22361995979389603928e-01,  2.22557442085748097282e-01,
- 2.22752850000390412166e-01,  2.22948219738239528098e-01,
- 2.23143551314209764858e-01,  2.23338844743206588195e-01,
- 2.23534100040126831876e-01,  2.23729317219858586663e-01,
- 2.23924496297281144797e-01,  2.24119637287265222048e-01,
- 2.24314740204672707913e-01,  2.24509805064356859905e-01,
- 2.24704831881162248042e-01,  2.24899820669924727090e-01,
- 2.25094771445471492077e-01,  2.25289684222621078291e-01,
- 2.25484559016183333524e-01,  2.25679395840959445829e-01,
- 2.25874194711741999031e-01,  2.26068955643314889459e-01,
- 2.26263678650453381458e-01,  2.26458363747924135145e-01,
- 2.26653010950485178654e-01,  2.26847620272885880377e-01,
- 2.27042191729867087746e-01,  2.27236725336160932942e-01,
- 2.27431221106491082695e-01,  2.27625679055572488485e-01,
- 2.27820099198111608585e-01,  2.28014481548806269284e-01,
- 2.28208826122345775911e-01,  2.28403132933410801808e-01,
- 2.28597401996673554869e-01,  2.28791633326797638759e-01,
- 2.28985826938438108424e-01,  2.29179982846241497851e-01,
- 2.29374101064845820064e-01,  2.29568181608880567124e-01,
- 2.29762224492966654621e-01,  2.29956229731716588205e-01,
- 2.30150197339734297053e-01,  2.30344127331615244891e-01,
- 2.30538019721946374485e-01,  2.30731874525306190904e-01,
- 2.30925691756264706012e-01,  2.31119471429383438466e-01,
- 2.31313213559215469228e-01,  2.31506918160305386056e-01,
- 2.31700585247189394522e-01,  2.31894214834395206992e-01,
- 2.32087806936442098138e-01,  2.32281361567840904936e-01,
- 2.32474878743094054423e-01,  2.32668358476695591452e-01,
- 2.32861800783131095427e-01,  2.33055205676877763565e-01,
- 2.33248573172404383147e-01,  2.33441903284171359267e-01,
- 2.33635196026630714838e-01,  2.33828451414226118343e-01,
- 2.34021669461392772815e-01,  2.34214850182557637881e-01,
- 2.34407993592139235473e-01,  2.34601099704547760849e-01,
- 2.34794168534185027086e-01,  2.34987200095444576098e-01,
- 2.35180194402711567614e-01,  2.35373151470362834692e-01,
- 2.35566071312766911472e-01,  2.35758953944283977666e-01,
- 2.35951799379265969581e-01,  2.36144607632056469093e-01,
- 2.36337378716990786920e-01,  2.36530112648395907105e-01,
- 2.36722809440590598040e-01,  2.36915469107885301447e-01,
- 2.37108091664582215641e-01,  2.37300677124975240018e-01,
- 2.37493225503350030570e-01,  2.37685736813984055393e-01,
- 2.37878211071146455913e-01,  2.38070648289098130146e-01,
- 2.38263048482091843727e-01,  2.38455411664372063374e-01,
- 2.38647737850175012397e-01,  2.38840027053728753970e-01,
- 2.39032279289253135612e-01,  2.39224494570959789197e-01,
- 2.39416672913052186455e-01,  2.39608814329725555714e-01,
- 2.39800918835166965160e-01,  2.39992986443555350595e-01,
- 2.40185017169061459930e-01,  2.40377011025847825421e-01,
- 2.40568968028068902454e-01,  2.40760888189870903009e-01,
- 2.40952771525392017704e-01,  2.41144618048762221507e-01,
- 2.41336427774103329247e-01,  2.41528200715529106635e-01,
- 2.41719936887145159243e-01,  2.41911636303049015773e-01,
- 2.42103298977330017028e-01,  2.42294924924069510208e-01,
- 2.42486514157340682374e-01,  2.42678066691208643713e-01,
- 2.42869582539730455295e-01,  2.43061061716955018053e-01,
- 2.43252504236923267067e-01,  2.43443910113668032791e-01,
- 2.43635279361214096561e-01,  2.43826611993578135085e-01,
- 2.44017908024768859221e-01,  2.44209167468786902955e-01,
- 2.44400390339624878910e-01,  2.44591576651267350595e-01,
- 2.44782726417690915666e-01,  2.44973839652864094907e-01,
- 2.45164916370747443253e-01,  2.45355956585293522032e-01,
- 2.45546960310446843456e-01,  2.45737927560143981642e-01,
- 2.45928858348313489346e-01,  2.46119752688876008984e-01,
- 2.46310610595744133855e-01,  2.46501432082822546921e-01,
- 2.46692217164007937535e-01,  2.46882965853189056959e-01,
- 2.47073678164246746114e-01,  2.47264354111053824559e-01,
- 2.47454993707475257025e-01,  2.47645596967368042396e-01,
- 2.47836163904581269213e-01,  2.48026694532956060169e-01,
- 2.48217188866325710883e-01,  2.48407646918515578882e-01,
- 2.48598068703343083596e-01,  2.48788454234617817384e-01,
- 2.48978803526141462266e-01,  2.49169116591707789921e-01,
- 2.49359393445102717202e-01,  2.49549634100104333889e-01,
- 2.49739838570482819424e-01,  2.49930006870000470665e-01,
- 2.50120139012411812907e-01,  2.50310235011463488863e-01,
- 2.50500294880894314176e-01,  2.50690318634435249656e-01,
- 2.50880306285809429045e-01,  2.51070257848732159012e-01,
- 2.51260173336910974662e-01,  2.51450052764045639542e-01,
- 2.51639896143827923591e-01,  2.51829703489942047234e-01,
- 2.52019474816064292799e-01,  2.52209210135863171054e-01,
- 2.52398909462999421205e-01,  2.52588572811126066409e-01,
- 2.52778200193888302749e-01,  2.52967791624923554750e-01,
- 2.53157347117861530883e-01,  2.53346866686324168061e-01,
- 2.53536350343925687145e-01,  2.53725798104272537437e-01,
- 2.53915209980963452185e-01,  2.54104585987589448592e-01,
- 2.54293926137733827808e-01,  2.54483230444972119422e-01,
- 2.54672498922872247995e-01,  2.54861731584994311017e-01,
- 2.55050928444890800950e-01,  2.55240089516106494205e-01,
- 2.55429214812178506655e-01,  2.55618304346636182611e-01,
- 2.55807358133001372380e-01,  2.55996376184787988173e-01,
- 2.56185358515502614729e-01,  2.56374305138643843183e-01,
- 2.56563216067702881684e-01,  2.56752091316163111312e-01,
- 2.56940930897500419139e-01,  2.57129734825182976188e-01,
- 2.57318503112671292943e-01,  2.57507235773418385882e-01,
- 2.57695932820869499924e-01,  2.57884594268462385980e-01,
- 2.58073220129627134423e-01,  2.58261810417786286109e-01,
- 2.58450365146354721357e-01,  2.58638884328739770968e-01,
- 2.58827367978341271737e-01,  2.59015816108551233388e-01,
- 2.59204228732754393683e-01,  2.59392605864327774334e-01,
- 2.59580947516640792028e-01,  2.59769253703055424953e-01,
- 2.59957524436926046274e-01,  2.60145759731599535147e-01,
- 2.60333959600415110192e-01,  2.60522124056704607042e-01,
- 2.60710253113792256308e-01,  2.60898346784994794589e-01,
- 2.61086405083621408973e-01,  2.61274428022973848051e-01,
- 2.61462415616346366409e-01,  2.61650367877025558094e-01,
- 2.61838284818290800704e-01,  2.62026166453413700275e-01,
- 2.62214012795658535371e-01,  2.62401823858282146062e-01,
- 2.62589599654533822903e-01,  2.62777340197655417953e-01,
- 2.62965045500881344775e-01,  2.63152715577438522931e-01,
- 2.63340350440546488997e-01,  2.63527950103417285543e-01,
- 2.63715514579255572158e-01,  2.63903043881258514425e-01,
- 2.64090538022615839431e-01,  2.64277997016510002304e-01,
- 2.64465420876115908655e-01,  2.64652809614601136623e-01,
- 2.64840163245125714830e-01,  2.65027481780842510961e-01,
- 2.65214765234896787671e-01,  2.65402013620426591167e-01,
- 2.65589226950562473650e-01,  2.65776405238427604338e-01,
- 2.65963548497137936000e-01,  2.66150656739801871886e-01,
- 2.66337729979520598800e-01,  2.66524768229387865048e-01,
- 2.66711771502490091468e-01,  2.66898739811906371422e-01,
- 2.67085673170708526314e-01,  2.67272571591960883541e-01,
- 2.67459435088720665075e-01,  2.67646263674037598879e-01,
- 2.67833057360954085446e-01,  2.68019816162505419843e-01,
- 2.68206540091719403129e-01,  2.68393229161616619916e-01,
- 2.68579883385210327340e-01,  2.68766502775506566092e-01,
- 2.68953087345503938366e-01,  2.69139637108193996440e-01,
- 2.69326152076560909610e-01,  2.69512632263581464187e-01,
- 2.69699077682225452079e-01,  2.69885488345455115677e-01,
- 2.70071864266225758477e-01,  2.70258205457485134460e-01,
- 2.70444511932174003199e-01,  2.70630783703225796799e-01,
- 2.70817020783566675401e-01,  2.71003223186115638210e-01,
- 2.71189390923784467979e-01,  2.71375524009477731013e-01,
- 2.71561622456092832678e-01,  2.71747686276519850868e-01,
- 2.71933715483641758048e-01,  2.72119710090334365749e-01,
- 2.72305670109466269047e-01,  2.72491595553898846571e-01,
- 2.72677486436486371524e-01,  2.72863342770075956167e-01,
- 2.73049164567507385293e-01,  2.73234951841613560308e-01,
- 2.73420704605219999639e-01,  2.73606422871145227305e-01,
- 2.73792106652200495365e-01,  2.73977755961190061473e-01,
- 2.74163370810910911324e-01,  2.74348951214152980693e-01,
- 2.74534497183699099931e-01,  2.74720008732324993961e-01,
- 2.74905485872799226765e-01,  2.75090928617883312413e-01,
- 2.75276336980331548521e-01,  2.75461710972891293814e-01,
- 2.75647050608302801589e-01,  2.75832355899299108692e-01,
- 2.76017626858606257567e-01,  2.76202863498943240739e-01,
- 2.76388065833022056328e-01,  2.76573233873547430495e-01,
- 2.76758367633217150505e-01,  2.76943467124722064732e-01,
- 2.77128532360745749585e-01,  2.77313563353964953606e-01,
- 2.77498560117049208884e-01,  2.77683522662661164127e-01,
- 2.77868451003456307102e-01,  2.78053345152083242198e-01,
- 2.78238205121183468371e-01,  2.78423030923391545688e-01,
- 2.78607822571334928785e-01,  2.78792580077634188918e-01,
- 2.78977303454902791913e-01,  2.79161992715747264704e-01,
- 2.79346647872767195331e-01,  2.79531268938555177428e-01,
- 2.79715855925696699202e-01,  2.79900408846770476501e-01,
- 2.80084927714348175254e-01,  2.80269412540994466987e-01,
- 2.80453863339267139843e-01,  2.80638280121716932047e-01,
- 2.80822662900887809467e-01,  2.81007011689316577030e-01,
- 2.81191326499533322814e-01,  2.81375607344061084980e-01,
- 2.81559854235416073820e-01,  2.81744067186107394196e-01,
- 2.81928246208637434123e-01,  2.82112391315501587208e-01,
- 2.82296502519188363678e-01,  2.82480579832179334865e-01,
- 2.82664623266949355251e-01,  2.82848632835966118382e-01,
- 2.83032608551690600951e-01,  2.83216550426576951782e-01,
- 2.83400458473072325294e-01,  2.83584332703617048033e-01,
- 2.83768173130644618674e-01,  2.83951979766581652509e-01,
- 2.84135752623847881448e-01,  2.84319491714856320552e-01,
- 2.84503197052012990476e-01,  2.84686868647717139513e-01,
- 2.84870506514361188088e-01,  2.85054110664330728753e-01,
- 2.85237681110004581697e-01,  2.85421217863754628219e-01,
- 2.85604720937946032766e-01,  2.85788190344937187426e-01,
- 2.85971626097079545392e-01,  2.86155028206717843009e-01,
- 2.86338396686190099771e-01,  2.86521731547827507303e-01,
- 2.86705032803954318332e-01,  2.86888300466888235274e-01,
- 2.87071534548940077158e-01,  2.87254735062413890656e-01,
- 2.87437902019607005588e-01,  2.87621035432809979415e-01,
- 2.87804135314306597238e-01,  2.87987201676373927306e-01,
- 2.88170234531282265511e-01,  2.88353233891295246405e-01,
- 2.88536199768669621157e-01,  2.88719132175655535111e-01,
- 2.88902031124496472270e-01,  2.89084896627429033256e-01,
- 2.89267728696683157352e-01,  2.89450527344482233527e-01,
- 2.89633292583042656343e-01,  2.89816024424574436580e-01,
- 2.89998722881280646124e-01,  2.90181387965357862058e-01,
- 2.90364019688995778079e-01,  2.90546618064377593083e-01,
- 2.90729183103679733602e-01,  2.90911714819072020344e-01,
- 2.91094213222717501655e-01,  2.91276678326772675565e-01,
- 2.91459110143387378766e-01,  2.91641508684704731102e-01,
- 2.91823873962861302100e-01,  2.92006205989986888927e-01,
- 2.92188504778204849455e-01,  2.92370770339631658175e-01,
- 2.92553002686377461306e-01,  2.92735201830545521684e-01,
- 2.92917367784232607342e-01,  2.93099500559528880483e-01,
- 2.93281600168517952998e-01,  2.93463666623276664414e-01,
- 2.93645699935875470477e-01,  2.93827700118377999061e-01,
- 2.94009667182841549771e-01,  2.94191601141316649848e-01,
- 2.94373502005847331731e-01,  2.94555369788470966519e-01,
- 2.94737204501218597041e-01,  2.94919006156114382744e-01,
- 2.95100774765176154801e-01,  2.95282510340415083050e-01,
- 2.95464212893835898033e-01,  2.95645882437436613444e-01,
- 2.95827518983208914705e-01,  2.96009122543137770389e-01,
- 2.96190693129201765288e-01,  2.96372230753372822853e-01,
- 2.96553735427616482756e-01,  2.96735207163891623328e-01,
- 2.96916645974150794629e-01,  2.97098051870339885383e-01,
- 2.97279424864398345019e-01,  2.97460764968259128160e-01,
- 2.97642072193848694628e-01,  2.97823346553087064947e-01,
- 2.98004588057887653818e-01,  2.98185796720157547668e-01,
- 2.98366972551797282609e-01,  2.98548115564700899949e-01,
- 2.98729225770756001701e-01,  2.98910303181843861609e-01,
- 2.99091347809839036564e-01,  2.99272359666609866213e-01,
- 2.99453338764018139884e-01,  2.99634285113919263122e-01,
- 2.99815198728162091157e-01,  2.99996079618589261973e-01,
- 3.00176927797036752210e-01,  3.00357743275334321265e-01,
- 3.00538526065305122703e-01,  3.00719276178766037333e-01,
- 3.00899993627527506668e-01,  3.01080678423393532928e-01,
- 3.01261330578161790061e-01,  3.01441950103623457213e-01,
- 3.01622537011563440768e-01,  3.01803091313760207814e-01,
- 3.01983613021985786151e-01,  3.02164102148005930815e-01,
- 3.02344558703580013059e-01,  3.02524982700460964846e-01,
- 3.02705374150395445376e-01,  3.02885733065123674557e-01,
- 3.03066059456379655046e-01,  3.03246353335890839187e-01,
- 3.03426614715378517584e-01,  3.03606843606557541548e-01,
- 3.03787040021136489631e-01,  3.03967203970817556602e-01,
- 3.04147335467296719980e-01,  3.04327434522263462480e-01,
- 3.04507501147401160591e-01,  3.04687535354386640485e-01,
- 3.04867537154890677620e-01,  3.05047506560577552648e-01,
- 3.05227443583105328972e-01,  3.05407348234125741726e-01,
- 3.05587220525284364303e-01,  3.05767060468220275293e-01,
- 3.05946868074566447060e-01,  3.06126643355949523695e-01,
- 3.06306386323989821019e-01,  3.06486096990301493115e-01,
- 3.06665775366492365794e-01,  3.06845421464164047620e-01,
- 3.07025035294911874395e-01,  3.07204616870324909161e-01,
- 3.07384166201985997713e-01,  3.07563683301471768594e-01,
- 3.07743168180352633101e-01,  3.07922620850192618747e-01,
- 3.08102041322549813351e-01,  3.08281429608975809931e-01,
- 3.08460785721016095273e-01,  3.08640109670209994430e-01,
- 3.08819401468090559693e-01,  3.08998661126184626102e-01,
- 3.09177888656012922475e-01,  3.09357084069089849354e-01,
- 3.09536247376923756569e-01,  3.09715378591016721188e-01,
- 3.09894477722864714053e-01,  3.10073544783957377735e-01,
- 3.10252579785778359600e-01,  3.10431582739805034254e-01,
- 3.10610553657508725589e-01,  3.10789492550354429223e-01,
- 3.10968399429801145573e-01,  3.11147274307301602292e-01,
- 3.11326117194302476321e-01,  3.11504928102244282861e-01,
- 3.11683707042561319867e-01,  3.11862454026681890085e-01,
- 3.12041169066028079015e-01,  3.12219852172015865932e-01,
- 3.12398503356055123881e-01,  3.12577122629549564170e-01,
- 3.12755710003896902904e-01,  3.12934265490488583428e-01,
- 3.13112789100710109391e-01,  3.13291280845940822708e-01,
- 3.13469740737553903553e-01,  3.13648168786916592410e-01,
- 3.13826565005389856999e-01,  3.14004929404328836373e-01,
- 3.14183261995082285800e-01,  3.14361562788993187390e-01,
- 3.14539831797398306001e-01,  3.14718069031628300269e-01,
- 3.14896274503007833623e-01,  3.15074448222855574286e-01,
- 3.15252590202484084259e-01,  3.15430700453199819311e-01,
- 3.15608778986303351033e-01,  3.15786825813089033765e-01,
- 3.15964840944845282156e-01,  3.16142824392854515647e-01,
- 3.16320776168393047456e-01,  3.16498696282731251106e-01,
- 3.16676584747133449405e-01,  3.16854441572857969955e-01,
- 3.17032266771157145158e-01,  3.17210060353277145673e-01,
- 3.17387822330458424513e-01,  3.17565552713935272955e-01,
- 3.17743251514935987068e-01,  3.17920918744682867718e-01,
- 3.18098554414392331591e-01,  3.18276158535274800165e-01,
- 3.18453731118534588695e-01,  3.18631272175370239275e-01,
- 3.18808781716974187770e-01,  3.18986259754532985866e-01,
- 3.19163706299227134533e-01,  3.19341121362231306069e-01,
- 3.19518504954714122057e-01,  3.19695857087838430921e-01,
- 3.19873177772760863835e-01,  3.20050467020632389836e-01,
- 3.20227724842597871735e-01,  3.20404951249796343671e-01,
- 3.20582146253360900090e-01,  3.20759309864418695746e-01,
- 3.20936442094090945698e-01,  3.21113542953492980825e-01,
- 3.21290612453734303333e-01,  3.21467650605918364715e-01,
- 3.21644657421142898812e-01,  3.21821632910499588753e-01,
- 3.21998577085074344506e-01,  3.22175489955947080833e-01,
- 3.22352371534191939340e-01,  3.22529221830877121935e-01,
- 3.22706040857064946348e-01,  3.22882828623812012658e-01,
- 3.23059585142168759209e-01,  3.23236310423180128737e-01,
- 3.23413004477884902244e-01,  3.23589667317316198591e-01,
- 3.23766298952501196950e-01,  3.23942899394461303331e-01,
- 3.24119468654211984049e-01,  3.24296006742762987773e-01,
- 3.24472513671118123479e-01,  3.24648989450275538005e-01,
- 3.24825434091227327471e-01,  3.25001847604959981375e-01,
- 3.25178230002454049519e-01,  3.25354581294684308546e-01,
- 3.25530901492619706428e-01,  3.25707190607223473489e-01,
- 3.25883448649452955870e-01,  3.26059675630259726553e-01,
- 3.26235871560589585361e-01,  3.26412036451382503444e-01,
- 3.26588170313572789816e-01,  3.26764273158088813798e-01,
- 3.26940344995853338084e-01,  3.27116385837783185675e-01,
- 3.27292395694789517435e-01,  3.27468374577777776580e-01,
- 3.27644322497647522141e-01,  3.27820239465292706527e-01,
- 3.27996125491601397961e-01,  3.28171980587455947020e-01,
- 3.28347804763733097655e-01,  3.28523598031303654121e-01,
- 3.28699360401032869561e-01,  3.28875091883780168445e-01,
- 3.29050792490399257595e-01,  3.29226462231738181696e-01,
- 3.29402101118639156763e-01,  3.29577709161938792182e-01,
- 3.29753286372467979692e-01,  3.29928832761051837874e-01,
- 3.30104348338509878680e-01,  3.30279833115655840903e-01,
- 3.30455287103297801199e-01,  3.30630710312238174087e-01,
- 3.30806102753273600925e-01,  3.30981464437195116446e-01,
- 3.31156795374788148756e-01,  3.31332095576832297290e-01,
- 3.31507365054101610369e-01,  3.31682603817364363152e-01,
- 3.31857811877383335197e-01,  3.32032989244915477389e-01,
- 3.32208135930712189499e-01,  3.32383251945519209158e-01,
- 3.32558337300076611864e-01,  3.32733392005118810975e-01,
- 3.32908416071374668732e-01,  3.33083409509567329732e-01,
- 3.33258372330414331941e-01,  3.33433304544627551191e-01,
- 3.33608206162913423221e-01,  3.33783077195972499585e-01,
- 3.33957917654499891746e-01,  3.34132727549185049032e-01,
- 3.34307506890711869652e-01,  3.34482255689758534167e-01,
- 3.34656973956997838560e-01,  3.34831661703096694627e-01,
- 3.35006318938716629585e-01,  3.35180945674513619537e-01,
- 3.35355541921137811912e-01,  3.35530107689234080581e-01,
- 3.35704642989441526257e-01,  3.35879147832393754047e-01,
- 3.36053622228718762432e-01,  3.36228066189038998779e-01,
- 3.36402479723971414849e-01,  3.36576862844127355778e-01,
- 3.36751215560112560077e-01,  3.36925537882527326161e-01,
- 3.37099829821966401333e-01,  3.37274091389018870757e-01,
- 3.37448322594268379504e-01,  3.37622523448293077042e-01,
- 3.37796693961665561723e-01,  3.37970834144952825273e-01,
- 3.38144944008716419326e-01,  3.38319023563512344399e-01,
- 3.38493072819891160918e-01,  3.38667091788397822683e-01,
- 3.38841080479571843398e-01,  3.39015038903947185656e-01,
- 3.39188967072052427465e-01,  3.39362864994410484698e-01,
- 3.39536732681538888645e-01,  3.39710570143949730504e-01,
- 3.39884377392149494845e-01,  3.40058154436639281659e-01,
- 3.40231901287914695331e-01,  3.40405617956465900154e-01,
- 3.40579304452777453793e-01,  3.40752960787328640357e-01,
- 3.40926586970593192838e-01,  3.41100183013039404134e-01,
- 3.41273748925130071541e-01,  3.41447284717322607772e-01,
- 3.41620790400068985448e-01,  3.41794265983815681587e-01,
- 3.41967711479003788622e-01,  3.42141126896068903385e-01,
- 3.42314512245441293636e-01,  3.42487867537545731533e-01,
- 3.42661192782801549139e-01,  3.42834487991622693936e-01,
- 3.43007753174417784336e-01,  3.43180988341589887636e-01,
- 3.43354193503536686549e-01,  3.43527368670650590232e-01,
- 3.43700513853318456725e-01,  3.43873629061921814998e-01,
- 3.44046714306836864949e-01,  3.44219769598434255364e-01,
- 3.44392794947079416978e-01,  3.44565790363132395946e-01,
- 3.44738755856947631795e-01,  3.44911691438874568050e-01,
- 3.45084597119256875075e-01,  3.45257472908433227232e-01,
- 3.45430318816736692256e-01,  3.45603134854495064321e-01,
- 3.45775921032030753022e-01,  3.45948677359660894393e-01,
- 3.46121403847697239886e-01,  3.46294100506446100862e-01,
- 3.46466767346208570633e-01,  3.46639404377280413438e-01,
- 3.46812011609952008939e-01,  3.46984589054508352213e-01,
- 3.47157136721229275800e-01,  3.47329654620389172148e-01,
- 3.47502142762257104636e-01,  3.47674601157096863080e-01,
- 3.47847029815167019251e-01,  3.48019428746720593804e-01,
- 3.48191797962005611389e-01,  3.48364137471264545542e-01,
- 3.48536447284734762775e-01,  3.48708727412648133992e-01,
- 3.48880977865231478585e-01,  3.49053198652706175853e-01,
- 3.49225389785288331534e-01,  3.49397551273188777810e-01,
- 3.49569683126613184321e-01,  3.49741785355761836129e-01,
- 3.49913857970829800248e-01,  3.50085900982006870130e-01,
- 3.50257914399477510159e-01,  3.50429898233421077691e-01,
- 3.50601852494011601014e-01,  3.50773777191417779342e-01,
- 3.50945672335803204867e-01,  3.51117537937326196218e-01,
- 3.51289374006139798468e-01,  3.51461180552391783127e-01,
- 3.51632957586224814683e-01,  3.51804705117776228551e-01,
- 3.51976423157178197609e-01,  3.52148111714557621177e-01,
- 3.52319770800036180525e-01,  3.52491400423730505409e-01,
- 3.52663000595751729982e-01,  3.52834571326206047903e-01,
- 3.53006112625194323762e-01,  3.53177624502812259610e-01,
- 3.53349106969150339452e-01,  3.53520560034293884755e-01,
- 3.53691983708322998936e-01,  3.53863378001312622878e-01,
- 3.54034742923332534925e-01,  3.54206078484447295374e-01,
- 3.54377384694716357494e-01,  3.54548661564193900997e-01,
- 3.54719909102929054079e-01,  3.54891127320965671377e-01,
- 3.55062316228342556013e-01,  3.55233475835093293060e-01,
- 3.55404606151246360568e-01,  3.55575707186825074047e-01,
- 3.55746778951847530958e-01,  3.55917821456326777252e-01,
- 3.56088834710270696338e-01,  3.56259818723682064601e-01,
- 3.56430773506558440378e-01,  3.56601699068892386002e-01,
- 3.56772595420671190247e-01,  3.56943462571877201395e-01,
- 3.57114300532487438655e-01,  3.57285109312473980747e-01,
- 3.57455888921803799363e-01,  3.57626639370438537124e-01,
- 3.57797360668335062694e-01,  3.57968052825444915666e-01,
- 3.58138715851714584115e-01,  3.58309349757085504606e-01,
- 3.58479954551494006676e-01,  3.58650530244871368346e-01,
- 3.58821076847143705102e-01,  3.58991594368232136425e-01,
- 3.59162082818052619260e-01,  3.59332542206516170058e-01,
- 3.59502972543528642735e-01,  3.59673373838990784179e-01,
- 3.59843746102798400788e-01,  3.60014089344842191931e-01,
- 3.60184403575007805465e-01,  3.60354688803175782219e-01,
- 3.60524945039221667020e-01,  3.60695172293016008691e-01,
- 3.60865370574424193517e-01,  3.61035539893306722803e-01,
- 3.61205680259518935316e-01,  3.61375791682911229330e-01,
- 3.61545874173328896095e-01,  3.61715927740612286367e-01,
- 3.61885952394596643877e-01,  3.62055948145112271863e-01,
- 3.62225915001984422048e-01,  3.62395852975033405663e-01,
- 3.62565762074074371402e-01,  3.62735642308917638488e-01,
- 3.62905493689368474630e-01,  3.63075316225227040512e-01,
- 3.63245109926288667346e-01,  3.63414874802343634830e-01,
- 3.63584610863177171147e-01,  3.63754318118569619500e-01,
- 3.63923996578296327087e-01,  3.64093646252127589591e-01,
- 3.64263267149828817715e-01,  3.64432859281160426157e-01,
- 3.64602422655877833613e-01,  3.64771957283731573796e-01,
- 3.64941463174467128905e-01,  3.65110940337825040647e-01,
- 3.65280388783541021258e-01,  3.65449808521345675949e-01,
- 3.65619199560964724949e-01,  3.65788561912118947994e-01,
- 3.65957895584524239840e-01,  3.66127200587891499239e-01,
- 3.66296476931926684451e-01,  3.66465724626330868752e-01,
- 3.66634943680800184929e-01,  3.66804134105025769763e-01,
- 3.66973295908693986078e-01,  3.67142429101486200693e-01,
- 3.67311533693078839935e-01,  3.67480609693143445149e-01,
- 3.67649657111346728211e-01,  3.67818675957350349481e-01,
- 3.67987666240811250873e-01,  3.68156627971381322784e-01,
- 3.68325561158707626142e-01,  3.68494465812432392404e-01,
- 3.68663341942192857026e-01,  3.68832189557621481502e-01,
- 3.69001008668345675812e-01,  3.69169799283988242511e-01,
- 3.69338561414166821617e-01,  3.69507295068494445722e-01,
- 3.69676000256579095904e-01,  3.69844676988023979280e-01,
- 3.70013325272427417989e-01,  3.70181945119382904696e-01,
- 3.70350536538478991577e-01,  3.70519099539299512358e-01,
- 3.70687634131423415784e-01,  3.70856140324424710109e-01,
- 3.71024618127872685136e-01,  3.71193067551331690179e-01,
- 3.71361488604361411614e-01,  3.71529881296516484301e-01,
- 3.71698245637346880166e-01,  3.71866581636397741661e-01,
- 3.72034889303209215239e-01,  3.72203168647316895434e-01,
- 3.72371419678251380780e-01,  3.72539642405538495851e-01,
- 3.72707836838699291260e-01,  3.72876002987249988152e-01,
- 3.73044140860701978202e-01,  3.73212250468561934635e-01,
- 3.73380331820331756720e-01,  3.73548384925508347720e-01,
- 3.73716409793584058985e-01,  3.73884406434046412393e-01,
- 3.74052374856377989332e-01,  3.74220315070056763762e-01,
- 3.74388227084555880175e-01,  3.74556110909343709103e-01,
- 3.74723966553883902630e-01,  3.74891794027635172348e-01,
- 3.75059593340051733446e-01,  3.75227364500582805107e-01,
- 3.75395107518673054603e-01,  3.75562822403762208712e-01,
- 3.75730509165285331274e-01,  3.75898167812672767685e-01,
- 3.76065798355350089377e-01,  3.76233400802738204849e-01,
- 3.76400975164253082106e-01,  3.76568521449306137239e-01,
- 3.76736039667304067891e-01,  3.76903529827648686723e-01,
- 3.77070991939737309995e-01,  3.77238426012962257960e-01,
- 3.77405832056711409983e-01,  3.77573210080367704933e-01,
- 3.77740560093309529766e-01,  3.77907882104910441967e-01,
- 3.78075176124539447109e-01,  3.78242442161560721292e-01,
- 3.78409680225333722170e-01,  3.78576890325213299970e-01,
- 3.78744072470549641984e-01,  3.78911226670688106033e-01,
- 3.79078352934969442511e-01,  3.79245451272729794390e-01,
- 3.79412521693300530679e-01,  3.79579564206008357452e-01,
- 3.79746578820175262337e-01,  3.79913565545118681044e-01,
- 3.80080524390151330838e-01,  3.80247455364581210535e-01,
- 3.80414358477711711526e-01,  3.80581233738841562264e-01,
- 3.80748081157264828267e-01,  3.80914900742270912115e-01,
- 3.81081692503144608963e-01,  3.81248456449166051030e-01,
- 3.81415192589610707596e-01,  3.81581900933749385008e-01,
- 3.81748581490848337694e-01,  3.81915234270169157149e-01,
- 3.82081859280968716419e-01,  3.82248456532499392146e-01,
- 3.82415026034008842526e-01,  3.82581567794740229349e-01,
- 3.82748081823931884937e-01,  3.82914568130817700720e-01,
- 3.83081026724626960700e-01,  3.83247457614584230434e-01,
- 3.83413860809909523564e-01,  3.83580236319818357327e-01,
- 3.83746584153521419491e-01,  3.83912904320224956933e-01,
- 3.84079196829130664614e-01,  3.84245461689435519048e-01,
- 3.84411698910332055856e-01,  3.84577908501008036701e-01,
- 3.84744090470646837865e-01,  3.84910244828427117181e-01,
- 3.85076371583523036080e-01,  3.85242470745104093055e-01,
- 3.85408542322335401220e-01,  3.85574586324377355240e-01,
- 3.85740602760385797865e-01,  3.85906591639512019931e-01,
- 3.86072552970902815872e-01,  3.86238486763700372695e-01,
- 3.86404393027042381004e-01,  3.86570271770061868466e-01,
- 3.86736123001887421857e-01,  3.86901946731643076038e-01,
- 3.87067742968448313956e-01,  3.87233511721418011131e-01,
- 3.87399252999662713215e-01,  3.87564966812288136389e-01,
- 3.87730653168395777985e-01,  3.87896312077082416891e-01,
- 3.88061943547440391100e-01,  3.88227547588557486691e-01,
- 3.88393124209516937828e-01,  3.88558673419397537785e-01,
- 3.88724195227273583431e-01,  3.88889689642214819720e-01,
- 3.89055156673286495206e-01,  3.89220596329549362036e-01,
- 3.89386008620059675955e-01,  3.89551393553869196307e-01,
- 3.89716751140025186029e-01,  3.89882081387570522679e-01,
- 3.90047384305543420879e-01,  3.90212659902977765380e-01,
- 3.90377908188902833508e-01,  3.90543129172343517208e-01,
- 3.90708322862320267532e-01,  3.90873489267848928108e-01,
- 3.91038628397941012693e-01,  3.91203740261603483130e-01,
- 3.91368824867838915882e-01,  3.91533882225645335495e-01,
- 3.91698912344016436649e-01,  3.91863915231941306594e-01,
- 3.92028890898404758225e-01,  3.92193839352386997010e-01,
- 3.92358760602863898548e-01,  3.92523654658806786522e-01,
- 3.92688521529182710257e-01,  3.92853361222954111653e-01,
- 3.93018173749079158252e-01,  3.93182959116511465680e-01,
- 3.93347717334200208672e-01,  3.93512448411090343114e-01,
- 3.93677152356122161958e-01,  3.93841829178231628283e-01,
- 3.94006478886350375301e-01,  3.94171101489405484308e-01,
- 3.94335696996319762242e-01,  3.94500265416011519637e-01,
- 3.94664806757394681647e-01,  3.94829321029378788044e-01,
- 3.94993808240868993220e-01,  3.95158268400766010675e-01,
- 3.95322701517966224039e-01,  3.95487107601361631559e-01,
- 3.95651486659839735083e-01,  3.95815838702283817607e-01,
- 3.95980163737572665728e-01,  3.96144461774580736169e-01,
- 3.96308732822178044763e-01,  3.96472976889230388498e-01,
- 3.96637193984599012442e-01,  3.96801384117140887309e-01,
- 3.96965547295708709452e-01,  3.97129683529150678822e-01,
- 3.97293792826310665500e-01,  3.97457875196028209697e-01,
- 3.97621930647138466242e-01,  3.97785959188472371117e-01,
- 3.97949960828856363904e-01,  3.98113935577112609820e-01,
- 3.98277883442058888708e-01,  3.98441804432508706046e-01,
- 3.98605698557271237448e-01,  3.98769565825151217631e-01,
- 3.98933406244949217978e-01,  3.99097219825461368981e-01,
- 3.99261006575479415748e-01,  3.99424766503791051075e-01,
- 3.99588499619179360334e-01,  3.99752205930423210045e-01,
- 3.99915885446297303396e-01,  4.00079538175571791658e-01,
- 4.00243164127012718279e-01,  4.00406763309381685811e-01,
- 4.00570335731436077964e-01,  4.00733881401929004085e-01,
- 4.00897400329609188141e-01,  4.01060892523221135253e-01,
- 4.01224357991505076182e-01,  4.01387796743196800797e-01,
- 4.01551208787028046654e-01,  4.01714594131726110415e-01,
- 4.01877952786014125408e-01,  4.02041284758610784067e-01,
- 4.02204590058230671001e-01,  4.02367868693584040951e-01,
- 4.02531120673376818786e-01,  4.02694346006310877062e-01,
- 4.02857544701083536420e-01,  4.03020716766388009678e-01,
- 4.03183862210913346313e-01,  4.03346981043344210427e-01,
- 4.03510073272361047270e-01,  4.03673138906640027734e-01,
- 4.03836177954853103866e-01,  4.03999190425668119886e-01,
- 4.04162176327748423610e-01,  4.04325135669753310541e-01,
- 4.04488068460337746313e-01,  4.04650974708152644244e-01,
- 4.04813854421844421250e-01,  4.04976707610055497444e-01,
- 4.05139534281423963069e-01,  4.05302334444583689521e-01,
- 4.05465108108164384859e-01,  4.05627855280791482784e-01,
- 4.05790575971086253659e-01,  4.05953270187665749003e-01,
- 4.06115937939142745972e-01,  4.06278579234125969410e-01,
- 4.06441194081219814294e-01,  4.06603782489024567770e-01,
- 4.06766344466136187119e-01,  4.06928880021146577306e-01,
- 4.07091389162643424449e-01,  4.07253871899210195817e-01,
- 4.07416328239426139834e-01,  4.07578758191866397098e-01,
- 4.07741161765101944869e-01,  4.07903538967699541562e-01,
- 4.08065889808221726742e-01,  4.08228214295226987662e-01,
- 4.08390512437269537216e-01,  4.08552784242899424960e-01,
- 4.08715029720662648138e-01,  4.08877248879100985146e-01,
- 4.09039441726751940021e-01,  4.09201608272149075507e-01,
- 4.09363748523821679992e-01,  4.09525862490294934037e-01,
- 4.09687950180089799357e-01,  4.09850011601723129839e-01,
- 4.10012046763707727060e-01,  4.10174055674552173745e-01,
- 4.10336038342760889286e-01,  4.10497994776834240760e-01,
- 4.10659924985268376396e-01,  4.10821828976555447621e-01,
- 4.10983706759183275992e-01,  4.11145558341635852795e-01,
- 4.11307383732392728426e-01,  4.11469182939929623011e-01,
- 4.11630955972717926805e-01,  4.11792702839225033262e-01,
- 4.11954423547914172499e-01,  4.12116118107244577828e-01,
- 4.12277786525671208206e-01,  4.12439428811645081296e-01,
- 4.12601044973613051425e-01,  4.12762635020017809584e-01,
- 4.12924198959298049960e-01,  4.13085736799888414428e-01,
- 4.13247248550219326013e-01,  4.13408734218717210940e-01,
- 4.13570193813804387606e-01,  4.13731627343899122096e-01,
- 4.13893034817415517157e-01,  4.14054416242763789757e-01,
- 4.14215771628349826994e-01,  4.14377100982575685695e-01,
- 4.14538404313839203841e-01,  4.14699681630534222609e-01,
- 4.14860932941050530864e-01,  4.15022158253773809644e-01,
- 4.15183357577085743184e-01,  4.15344530919363852384e-01,
- 4.15505678288981772361e-01,  4.15666799694309030411e-01,
- 4.15827895143710990489e-01,  4.15988964645549075261e-01,
- 4.16150008208180710589e-01,  4.16311025839959270023e-01,
- 4.16472017549233963774e-01,  4.16632983344350116273e-01,
- 4.16793923233648999638e-01,  4.16954837225467778161e-01,
- 4.17115725328139674843e-01,  4.17276587549993804860e-01,
- 4.17437423899355397605e-01,  4.17598234384545574649e-01,
- 4.17759019013881405247e-01,  4.17919777795676072873e-01,
- 4.18080510738238597668e-01,  4.18241217849874169499e-01,
- 4.18401899138883814899e-01,  4.18562554613564674622e-01,
- 4.18723184282209781593e-01,  4.18883788153108282959e-01,
- 4.19044366234545218042e-01,  4.19204918534801795893e-01,
- 4.19365445062155117739e-01,  4.19525945824878288004e-01,
- 4.19686420831240469820e-01,  4.19846870089506885027e-01,
- 4.20007293607938703150e-01,  4.20167691394793096915e-01,
- 4.20328063458323408774e-01,  4.20488409806778928868e-01,
- 4.20648730448404839510e-01,  4.20809025391442659281e-01,
- 4.20969294644129632399e-01,  4.21129538214699283838e-01,
- 4.21289756111381030745e-01,  4.21449948342400404488e-01,
- 4.21610114915978995143e-01,  4.21770255840334340469e-01,
- 4.21930371123680147960e-01,  4.22090460774226183815e-01,
- 4.22250524800178161922e-01,  4.22410563209737965895e-01,
- 4.22570576011103482550e-01,  4.22730563212468657408e-01,
- 4.22890524822023494700e-01,  4.23050460847954223897e-01,
- 4.23210371298442855625e-01,  4.23370256181667792283e-01,
- 4.23530115505803272935e-01,  4.23689949279019761885e-01,
- 4.23849757509483726636e-01,  4.24009540205357748910e-01,
- 4.24169297374800524647e-01,  4.24329029025966752986e-01,
- 4.24488735167007302795e-01,  4.24648415806069157163e-01,
- 4.24808070951295302375e-01,  4.24967700610824949958e-01,
- 4.25127304792793314636e-01,  4.25286883505331780864e-01,
- 4.25446436756567736293e-01,  4.25605964554624793816e-01,
- 4.25765466907622680548e-01,  4.25924943823677126797e-01,
- 4.26084395310900088116e-01,  4.26243821377399578765e-01,
- 4.26403222031279727222e-01,  4.26562597280640942721e-01,
- 4.26721947133579471156e-01,  4.26881271598188005711e-01,
- 4.27040570682555131743e-01,  4.27199844394765715361e-01,
- 4.27359092742900625872e-01,  4.27518315735037068848e-01,
- 4.27677513379248142034e-01,  4.27836685683603279440e-01,
- 4.27995832656168084807e-01,  4.28154954305004109560e-01,
- 4.28314050638169185881e-01,  4.28473121663717371188e-01,
- 4.28632167389698781612e-01,  4.28791187824159647501e-01,
- 4.28950182975142479957e-01,  4.29109152850685904301e-01,
- 4.29268097458824715584e-01,  4.29427016807589878589e-01,
- 4.29585910905008472316e-01,  4.29744779759103801009e-01,
- 4.29903623377895449664e-01,  4.30062441769398950964e-01,
- 4.30221234941626229364e-01,  4.30380002902585323543e-01,
- 4.30538745660280330885e-01,  4.30697463222711796060e-01,
- 4.30856155597876211427e-01,  4.31014822793766405606e-01,
- 4.31173464818371321439e-01,  4.31332081679676238029e-01,
- 4.31490673385662437678e-01,  4.31649239944307483441e-01,
- 4.31807781363585274637e-01,  4.31966297651465769292e-01,
- 4.32124788815915150675e-01,  4.32283254864895827296e-01,
- 4.32441695806366432908e-01,  4.32600111648281937526e-01,
- 4.32758502398593258853e-01,  4.32916868065247761876e-01,
- 4.33075208656188981315e-01,  4.33233524179356677131e-01,
- 4.33391814642686779013e-01,  4.33550080054111552919e-01,
- 4.33708320421559379021e-01,  4.33866535752955029270e-01,
- 4.34024726056219334325e-01,  4.34182891339269516617e-01,
- 4.34341031610018912801e-01,  4.34499146876377251303e-01,
- 4.34657237146250430282e-01,  4.34815302427540573138e-01,
- 4.34973342728146084024e-01,  4.35131358055961647846e-01,
- 4.35289348418878174751e-01,  4.35447313824782800129e-01,
- 4.35605254281559051144e-01,  4.35763169797086569179e-01,
- 4.35921060379241387395e-01,  4.36078926035895708679e-01,
- 4.36236766774918072187e-01,  4.36394582604173242313e-01,
- 4.36552373531522319716e-01,  4.36710139564822685809e-01,
- 4.36867880711927891735e-01,  4.37025596980687935922e-01,
- 4.37183288378948931019e-01,  4.37340954914553436961e-01,
- 4.37498596595340183413e-01,  4.37656213429144347327e-01,
- 4.37813805423797164362e-01,  4.37971372587126372977e-01,
- 4.38128914926955992382e-01,  4.38286432451106211516e-01,
- 4.38443925167393611098e-01,  4.38601393083631108105e-01,
- 4.38758836207627955783e-01,  4.38916254547189521595e-01,
- 4.39073648110117731314e-01,  4.39231016904210735952e-01,
- 4.39388360937262911765e-01,  4.39545680217065026785e-01,
- 4.39702974751404296327e-01,  4.39860244548064049930e-01,
- 4.40017489614824119926e-01,  4.40174709959460508379e-01,
- 4.40331905589745720153e-01,  4.40489076513448429839e-01,
- 4.40646222738333759317e-01,  4.40803344272163166728e-01,
- 4.40960441122694446481e-01,  4.41117513297681618223e-01,
- 4.41274560804875204401e-01,  4.41431583652022063724e-01,
- 4.41588581846865335656e-01,  4.41745555397144495924e-01,
- 4.41902504310595412029e-01,  4.42059428594950398761e-01,
- 4.42216328257937996149e-01,  4.42373203307283191510e-01,
- 4.42530053750707252913e-01,  4.42686879595927895714e-01,
- 4.42843680850659227044e-01,  4.43000457522611579275e-01,
- 4.43157209619491843089e-01,  4.43313937149003189919e-01,
- 4.43470640118845127464e-01,  4.43627318536713610708e-01,
- 4.43783972410300986411e-01,  4.43940601747295937596e-01,
- 4.44097206555383594573e-01,  4.44253786842245423916e-01,
- 4.44410342615559339485e-01,  4.44566873882999535894e-01,
- 4.44723380652236766064e-01,  4.44879862930938063670e-01,
- 4.45036320726766909672e-01,  4.45192754047383121296e-01,
- 4.45349162900443018565e-01,  4.45505547293599368786e-01,
- 4.45661907234501164510e-01,  4.45818242730793901085e-01,
- 4.45974553790119576657e-01,  4.46130840420116525635e-01,
- 4.46287102628419529715e-01,  4.46443340422659651345e-01,
- 4.46599553810464677817e-01,  4.46755742799458455128e-01,
- 4.46911907397261609631e-01,  4.47068047611490881899e-01,
- 4.47224163449759737343e-01,  4.47380254919677866621e-01,
- 4.47536322028851463184e-01,  4.47692364784883112261e-01,
- 4.47848383195372012899e-01,  4.48004377267913589389e-01,
- 4.48160347010099879839e-01,  4.48316292429519203111e-01,
- 4.48472213533756491888e-01,  4.48628110330393070626e-01,
- 4.48783982827006711069e-01,  4.48939831031171632247e-01,
- 4.49095654950458444965e-01,  4.49251454592434429358e-01,
- 4.49407229964663146315e-01,  4.49562981074704659523e-01,
- 4.49718707930115535465e-01,  4.49874410538448787911e-01,
- 4.50030088907253877917e-01,  4.50185743044076824848e-01,
- 4.50341372956460039845e-01,  4.50496978651942492355e-01,
- 4.50652560138059488093e-01,  4.50808117422343002101e-01,
- 4.50963650512321345687e-01,  4.51119159415519443979e-01,
- 4.51274644139458558367e-01,  4.51430104691656619575e-01,
- 4.51585541079627950101e-01,  4.51740953310883319727e-01,
- 4.51896341392930112058e-01,  4.52051705333272157983e-01,
- 4.52207045139409735679e-01,  4.52362360818839792653e-01,
- 4.52517652379055612677e-01,  4.52672919827546982319e-01,
- 4.52828163171800412989e-01,  4.52983382419298696853e-01,
- 4.53138577577521295403e-01,  4.53293748653944061910e-01,
- 4.53448895656039463464e-01,  4.53604018591276414440e-01,
- 4.53759117467120498546e-01,  4.53914192291033691262e-01,
- 4.54069243070474470869e-01,  4.54224269812897984977e-01,
- 4.54379272525755772971e-01,  4.54534251216496043568e-01,
- 4.54689205892563397260e-01,  4.54844136561399159380e-01,
- 4.54999043230440991525e-01,  4.55153925907123280137e-01,
- 4.55308784598876803429e-01,  4.55463619313129008948e-01,
- 4.55618430057303847036e-01,  4.55773216838821770835e-01,
- 4.55927979665099847306e-01,  4.56082718543551757229e-01,
- 4.56237433481587573159e-01,  4.56392124486614148005e-01,
- 4.56546791566034670939e-01,  4.56701434727249055978e-01,
- 4.56856053977653775444e-01,  4.57010649324641693436e-01,
- 4.57165220775602509917e-01,  4.57319768337922372137e-01,
- 4.57474292018983930141e-01,  4.57628791826166447798e-01,
- 4.57783267766845969327e-01,  4.57937719848394764188e-01,
- 4.58092148078182048732e-01,  4.58246552463573320058e-01,
- 4.58400933011930911132e-01,  4.58555289730613546695e-01,
- 4.58709622626976676329e-01,  4.58863931708372252416e-01,
- 4.59018216982148952177e-01,  4.59172478455651955631e-01,
- 4.59326716136223001108e-01,  4.59480930031200551777e-01,
- 4.59635120147919573608e-01,  4.59789286493711701898e-01,
- 4.59943429075905130254e-01,  4.60097547901824721617e-01,
- 4.60251642978791952743e-01,  4.60405714314124858699e-01,
- 4.60559761915138143884e-01,  4.60713785789143015492e-01,
- 4.60867785943447572095e-01,  4.61021762385356193015e-01,
- 4.61175715122170148952e-01,  4.61329644161187268914e-01,
- 4.61483549509701884705e-01,  4.61637431175005163997e-01,
- 4.61791289164384777255e-01,  4.61945123485125008767e-01,
- 4.62098934144506923172e-01,  4.62252721149808087908e-01,
- 4.62406484508302795255e-01,  4.62560224227261951313e-01,
- 4.62713940313953076000e-01,  4.62867632775640358567e-01,
- 4.63021301619584713105e-01,  4.63174946853043612016e-01,
- 4.63328568483271197032e-01,  4.63482166517518334725e-01,
- 4.63635740963032505491e-01,  4.63789291827057803541e-01,
- 4.63942819116835103443e-01,  4.64096322839601782562e-01,
- 4.64249803002592054124e-01,  4.64403259613036689668e-01,
- 4.64556692678163130061e-01,  4.64710102205195596525e-01,
- 4.64863488201354924101e-01,  4.65016850673858561649e-01,
- 4.65170189629920738383e-01,  4.65323505076752297338e-01,
- 4.65476797021560750878e-01,  4.65630065471550447231e-01,
- 4.65783310433922237426e-01,  4.65936531915873697329e-01,
- 4.66089729924599238675e-01,  4.66242904467289775994e-01,
- 4.66396055551133059680e-01,  4.66549183183313398438e-01,
- 4.66702287371011992345e-01,  4.66855368121406655302e-01,
- 4.67008425441671759515e-01,  4.67161459338978624078e-01,
- 4.67314469820495126395e-01,  4.67467456893385868710e-01,
- 4.67620420564812233621e-01,  4.67773360841932217546e-01,
- 4.67926277731900652768e-01,  4.68079171241869040898e-01,
- 4.68232041378985497371e-01,  4.68384888150395028994e-01,
- 4.68537711563239256396e-01,  4.68690511624656580558e-01,
- 4.68843288341782127304e-01,  4.68996041721747636277e-01,
- 4.69148771771681794007e-01,  4.69301478498709900844e-01,
- 4.69454161909953870957e-01,  4.69606822012532620914e-01,
- 4.69759458813561625590e-01,  4.69912072320153140215e-01,
- 4.70064662539416200371e-01,  4.70217229478456510972e-01,
- 4.70369773144376612795e-01,  4.70522293544275715949e-01,
- 4.70674790685249866407e-01,  4.70827264574391779473e-01,
- 4.70979715218791006315e-01,  4.71132142625533822944e-01,
- 4.71284546801703230212e-01,  4.71436927754379064837e-01,
- 4.71589285490637777354e-01,  4.71741620017552876210e-01,
- 4.71893931342194261624e-01,  4.72046219471628891728e-01,
- 4.72198484412920449493e-01,  4.72350726173129231711e-01,
- 4.72502944759312482059e-01,  4.72655140178524169059e-01,
- 4.72807312437814986072e-01,  4.72959461544232517838e-01,
- 4.73111587504821018424e-01,  4.73263690326621577764e-01,
- 4.73415770016672121656e-01,  4.73567826582007300740e-01,
- 4.73719860029658546008e-01,  4.73871870366654179829e-01,
- 4.74023857600019193903e-01,  4.74175821736775415793e-01,
- 4.74327762783941508928e-01,  4.74479680748532972601e-01,
- 4.74631575637562030945e-01,  4.74783447458037688449e-01,
- 4.74935296216965896487e-01,  4.75087121921349220255e-01,
- 4.75238924578187227343e-01,  4.75390704194476154676e-01,
- 4.75542460777209186062e-01,  4.75694194333376174644e-01,
- 4.75845904869963920447e-01,  4.75997592393955948342e-01,
- 4.76149256912332674574e-01,  4.76300898432071240229e-01,
- 4.76452516960145788794e-01,  4.76604112503527188593e-01,
- 4.76755685069183032798e-01,  4.76907234664077916975e-01,
- 4.77058761295173217043e-01,  4.77210264969427089277e-01,
- 4.77361745693794636836e-01,  4.77513203475227632211e-01,
- 4.77664638320674905803e-01,  4.77816050237081957341e-01,
- 4.77967439231391233445e-01,  4.78118805310541961084e-01,
- 4.78270148481470258606e-01,  4.78421468751109080220e-01,
- 4.78572766126388271513e-01,  4.78724040614234402913e-01,
- 4.78875292221571102758e-01,  4.79026520955318668715e-01,
- 4.79177726822394400852e-01,  4.79328909829712324076e-01,
- 4.79480069984183521203e-01,  4.79631207292715744384e-01,
- 4.79782321762213748162e-01,  4.79933413399579067438e-01,
- 4.80084482211710183996e-01,  4.80235528205502359977e-01,
- 4.80386551387847859917e-01,  4.80537551765635728707e-01,
- 4.80688529345751902611e-01,  4.80839484135079264782e-01,
- 4.80990416140497478725e-01,  4.81141325368883154834e-01,
- 4.81292211827109794875e-01,  4.81443075522047847503e-01,
- 4.81593916460564486215e-01,  4.81744734649523886905e-01,
- 4.81895530095787172353e-01,  4.82046302806212301206e-01,
- 4.82197052787654012462e-01,  4.82347780046964158540e-01,
- 4.82498484590991372212e-01,  4.82649166426581233136e-01,
- 4.82799825560576212347e-01,  4.82950461999815616743e-01,
- 4.83101075751135811132e-01,  4.83251666821369940674e-01,
- 4.83402235217348152929e-01,  4.83552780945897431319e-01,
- 4.83703304013841761666e-01,  4.83853804428001965654e-01,
- 4.84004282195195867367e-01,  4.84154737322238126751e-01,
- 4.84305169815940406153e-01,  4.84455579683111259293e-01,
- 4.84605966930556131267e-01,  4.84756331565077469570e-01,
- 4.84906673593474557560e-01,  4.85056993022543792016e-01,
- 4.85207289859078350069e-01,  4.85357564109868300228e-01,
- 4.85507815781700824420e-01,  4.85658044881359884926e-01,
- 4.85808251415626557446e-01,  4.85958435391278642523e-01,
- 4.86108596815091109633e-01,  4.86258735693835708602e-01,
- 4.86408852034281247168e-01,  4.86558945843193424441e-01,
- 4.86709017127334886421e-01,  4.86859065893465337016e-01,
- 4.87009092148341260486e-01,  4.87159095898716310025e-01,
- 4.87309077151340919176e-01,  4.87459035912962579395e-01,
- 4.87608972190325673512e-01,  4.87758885990171697777e-01,
- 4.87908777319238984305e-01,  4.88058646184262812096e-01,
- 4.88208492591975629082e-01,  4.88358316549106552529e-01,
- 4.88508118062381979652e-01,  4.88657897138525088021e-01,
- 4.88807653784256113116e-01,  4.88957388006292237304e-01,
- 4.89107099811347700857e-01,  4.89256789206133579917e-01,
- 4.89406456197358119553e-01,  4.89556100791726400701e-01,
- 4.89705722995940617714e-01,  4.89855322816699856325e-01,
- 4.90004900260700204662e-01,  4.90154455334634808761e-01,
- 4.90303988045193817058e-01,  4.90453498399064324875e-01,
- 4.90602986402930429932e-01,  4.90752452063473232347e-01,
- 4.90901895387370890145e-01,  4.91051316381298508240e-01,
- 4.91200715051928193944e-01,  4.91350091405929167987e-01,
- 4.91499445449967542476e-01,  4.91648777190706487428e-01,
- 4.91798086634806175255e-01,  4.91947373788923836280e-01,
- 4.92096638659713703223e-01,  4.92245881253827011204e-01,
- 4.92395101577911997737e-01,  4.92544299638613958248e-01,
- 4.92693475442575246070e-01,  4.92842628996435161426e-01,
- 4.92991760306830117955e-01,  4.93140869380393531696e-01,
- 4.93289956223755765574e-01,  4.93439020843544351447e-01,
- 4.93588063246383768057e-01,  4.93737083438895607568e-01,
- 4.93886081427698409030e-01,  4.94035057219407824913e-01,
- 4.94184010820636510086e-01,  4.94332942237994232837e-01,
- 4.94481851478087708340e-01,  4.94630738547520820703e-01,
- 4.94779603452894345406e-01,  4.94928446200806226862e-01,
- 4.95077266797851522906e-01,  4.95226065250622127234e-01,
- 4.95374841565707269009e-01,  4.95523595749692957746e-01,
- 4.95672327809162538426e-01,  4.95821037750696136381e-01,
- 4.95969725580871212411e-01,  4.96118391306262063178e-01,
- 4.96267034933440265299e-01,  4.96415656468974286764e-01,
- 4.96564255919429764496e-01,  4.96712833291369393329e-01,
- 4.96861388591352926003e-01,  4.97009921825937173168e-01,
- 4.97158433001676058893e-01,  4.97306922125120620670e-01,
- 4.97455389202818953898e-01,  4.97603834241316156373e-01,
- 4.97752257247154494824e-01,  4.97900658226873293888e-01,
- 4.98049037187008991623e-01,  4.98197394134095139506e-01,
- 4.98345729074662346925e-01,  4.98494042015238225662e-01,
- 4.98642332962347667458e-01,  4.98790601922512566446e-01,
- 4.98938848902251819162e-01,  4.99087073908081657603e-01,
- 4.99235276946515205143e-01,  4.99383458024062754088e-01,
- 4.99531617147231821185e-01,  4.99679754322526759047e-01,
- 4.99827869556449311261e-01,  4.99975962855498223814e-01,
- 5.00124034226169245088e-01,  5.00272083674955569954e-01,
- 5.00420111208346951592e-01,  5.00568116832830867224e-01,
- 5.00716100554891574426e-01,  5.00864062381010444192e-01,
- 5.01012002317666071960e-01,  5.01159920371334166589e-01,
- 5.01307816548487550357e-01,  5.01455690855596269984e-01,
- 5.01603543299127152544e-01,  5.01751373885544693643e-01,
- 5.01899182621310058217e-01,  5.02046969512881746667e-01,
- 5.02194734566715483837e-01,  5.02342477789263885946e-01,
- 5.02490199186977015700e-01,  5.02637898766301716158e-01,
- 5.02785576533682276867e-01,  5.02933232495559989772e-01,
- 5.03080866658373260236e-01,  5.03228479028557940111e-01,
- 5.03376069612546661602e-01,  5.03523638416769281356e-01,
- 5.03671185447652880462e-01,  5.03818710711621875475e-01,
- 5.03966214215097574325e-01,  5.04113695964498398361e-01,
- 5.04261155966240215420e-01,  5.04408594226735784716e-01,
- 5.04556010752395311947e-01,  5.04703405549625783166e-01,
- 5.04850778624831741936e-01,  5.04998129984414623195e-01,
- 5.05145459634773197344e-01,  5.05292767582303348206e-01,
- 5.05440053833398073024e-01,  5.05587318394447704506e-01,
- 5.05734561271839577756e-01,  5.05881782471958252323e-01,
- 5.06028982001185512196e-01,  5.06176159865900365808e-01,
- 5.06323316072478935013e-01,  5.06470450627294455082e-01,
- 5.06617563536717607775e-01,  5.06764654807115966229e-01,
- 5.06911724444854328020e-01,  5.07058772456294937214e-01,
- 5.07205798847797040274e-01,  5.07352803625717108105e-01,
- 5.07499786796408614009e-01,  5.07646748366222699822e-01,
- 5.07793688341507287731e-01,  5.07940606728607746412e-01,
- 5.08087503533866335914e-01,  5.08234378763622984820e-01,
- 5.08381232424214291044e-01,  5.08528064521974632051e-01,
- 5.08674875063235165662e-01,  5.08821664054324496185e-01,
- 5.08968431501568119302e-01,  5.09115177411289310250e-01,
- 5.09261901789807902574e-01,  5.09408604643441509374e-01,
- 5.09555285978504746147e-01,  5.09701945801309230788e-01,
- 5.09848584118164027679e-01,  5.09995200935375647688e-01,
- 5.10141796259247382039e-01,  5.10288370096079968441e-01,
- 5.10434922452171369045e-01,  5.10581453333816770446e-01,
- 5.10727962747308583680e-01,  5.10874450698936555249e-01,
- 5.11020917194987545074e-01,  5.11167362241745526497e-01,
- 5.11313785845492030369e-01,  5.11460188012505589938e-01,
- 5.11606568749062073920e-01,  5.11752928061434575469e-01,
- 5.11899265955893412183e-01,  5.12045582438706237127e-01,
- 5.12191877516137816784e-01,  5.12338151194450253101e-01,
- 5.12484403479902872469e-01,  5.12630634378752336744e-01,
- 5.12776843897252421201e-01,  5.12923032041654236579e-01,
- 5.13069198818206229085e-01,  5.13215344233153958342e-01,
- 5.13361468292740430464e-01,  5.13507571003205542937e-01,
- 5.13653652370786972803e-01,  5.13799712401719177457e-01,
- 5.13945751102234282826e-01,  5.14091768478561528255e-01,
- 5.14237764536927266512e-01,  5.14383739283555296851e-01,
- 5.14529692724666865011e-01,  5.14675624866479997088e-01,
- 5.14821535715210387707e-01,  5.14967425277071066958e-01,
- 5.15113293558271956307e-01,  5.15259140565020756775e-01,
- 5.15404966303521949733e-01,  5.15550770779977685088e-01,
- 5.15696554000587226163e-01,  5.15842315971547171749e-01,
- 5.15988056699051345078e-01,  5.16133776189290904846e-01,
- 5.16279474448454456237e-01,  5.16425151482727717855e-01,
- 5.16570807298293632748e-01,  5.16716441901332701470e-01,
- 5.16862055298022426975e-01,  5.17007647494537869726e-01,
- 5.17153218497051314628e-01,  5.17298768311732271030e-01,
- 5.17444296944747583744e-01,  5.17589804402261544070e-01,
- 5.17735290690435445704e-01,  5.17880755815428361899e-01,
- 5.18026199783396146259e-01,  5.18171622600492431943e-01,
- 5.18317024272867854506e-01,  5.18462404806670384971e-01,
- 5.18607764208045662890e-01,  5.18753102483136108170e-01,
- 5.18898419638082031291e-01,  5.19043715679020523091e-01,
- 5.19188990612086342935e-01,  5.19334244443411474634e-01,
- 5.19479477179125348485e-01,  5.19624688825354508204e-01,
- 5.19769879388223055017e-01,  5.19915048873852092548e-01,
- 5.20060197288360503975e-01,  5.20205324637864174875e-01,
- 5.20350430928476548331e-01,  5.20495516166308069828e-01,
- 5.20640580357466964401e-01,  5.20785623508058459485e-01,
- 5.20930645624185340026e-01,  5.21075646711947504386e-01,
- 5.21220626777442519462e-01,  5.21365585826764954547e-01,
- 5.21510523866007047467e-01,  5.21655440901258149466e-01,
- 5.21800336938605058279e-01,  5.21945211984131907101e-01,
- 5.22090066043920164596e-01,  5.22234899124048745911e-01,
- 5.22379711230593901661e-01,  5.22524502369629217924e-01,
- 5.22669272547225505221e-01,  5.22814021769451131583e-01,
- 5.22958750042371911526e-01,  5.23103457372050661967e-01,
- 5.23248143764547868351e-01,  5.23392809225921240568e-01,
- 5.23537453762226157039e-01,  5.23682077379514887561e-01,
- 5.23826680083837370461e-01,  5.23971261881240990554e-01,
- 5.24115822777770357099e-01,  5.24260362779467303795e-01,
- 5.24404881892371554919e-01,  5.24549380122519615099e-01,
- 5.24693857475945879543e-01,  5.24838313958681745852e-01,
- 5.24982749576756169141e-01,  5.25127164336195551009e-01,
- 5.25271558243023517498e-01,  5.25415931303261363183e-01,
- 5.25560283522927385036e-01,  5.25704614908037548560e-01,
- 5.25848925464605154723e-01,  5.25993215198640950980e-01,
- 5.26137484116153020253e-01,  5.26281732223146669902e-01,
- 5.26425959525624986846e-01,  5.26570166029588282441e-01,
- 5.26714351741034092491e-01,  5.26858516665957621328e-01,
- 5.27002660810351297727e-01,  5.27146784180205107972e-01,
- 5.27290886781506484837e-01,  5.27434968620239974513e-01,
- 5.27579029702387902745e-01,  5.27723070033929708700e-01,
- 5.27867089620842389053e-01,  5.28011088469100386966e-01,
- 5.28155066584675592090e-01,  5.28299023973537229537e-01,
- 5.28442960641651859888e-01,  5.28586876594983601230e-01,
- 5.28730771839494129161e-01,  5.28874646381142232698e-01,
- 5.29018500225884258370e-01,  5.29162333379674110212e-01,
- 5.29306145848463027725e-01,  5.29449937638199585876e-01,
- 5.29593708754829917140e-01,  5.29737459204297600479e-01,
- 5.29881188992543661342e-01,  5.30024898125506349622e-01,
- 5.30168586609121583741e-01,  5.30312254449322728611e-01,
- 5.30455901652040484606e-01,  5.30599528223202998589e-01,
- 5.30743134168735974932e-01,  5.30886719494562342447e-01,
- 5.31030284206602809505e-01,  5.31173828310775197892e-01,
- 5.31317351812994997928e-01,  5.31460854719175146421e-01,
- 5.31604337035225804620e-01,  5.31747798767055024349e-01,
- 5.31891239920567859834e-01,  5.32034660501667033827e-01,
- 5.32178060516252715573e-01,  5.32321439970222631821e-01,
- 5.32464798869471844789e-01,  5.32608137219892863179e-01,
- 5.32751455027375753204e-01,  5.32894752297807916541e-01,
- 5.33038029037074423400e-01,  5.33181285251057679453e-01,
- 5.33324520945637647884e-01,  5.33467736126691627341e-01,
- 5.33610930800094473980e-01,  5.33754104971718490447e-01,
- 5.33897258647433536893e-01,  5.34040391833106919961e-01,
- 5.34183504534603503799e-01,  5.34326596757785265979e-01,
- 5.34469668508512185667e-01,  5.34612719792641466476e-01,
- 5.34755750616027647482e-01,  5.34898760984523158335e-01,
- 5.35041750903977431086e-01,  5.35184720380237788362e-01,
- 5.35327669419148999275e-01,  5.35470598026553057380e-01,
- 5.35613506208289624766e-01,  5.35756393970195921028e-01,
- 5.35899261318106612251e-01,  5.36042108257853922026e-01,
- 5.36184934795267298391e-01,  5.36327740936173968933e-01,
- 5.36470526686398718752e-01,  5.36613292051763668411e-01,
- 5.36756037038088384961e-01,  5.36898761651190215005e-01,
- 5.37041465896883618569e-01,  5.37184149780981057276e-01,
- 5.37326813309292106169e-01,  5.37469456487623897800e-01,
- 5.37612079321781455299e-01,  5.37754681817566693169e-01,
- 5.37897263980779749559e-01,  5.38039825817217653992e-01,
- 5.38182367332675215543e-01,  5.38324888532945022845e-01,
- 5.38467389423816666927e-01,  5.38609870011077740415e-01,
- 5.38752330300513060379e-01,  5.38894770297905112422e-01,
- 5.39037190009033828630e-01,  5.39179589439676698603e-01,
- 5.39321968595608880470e-01,  5.39464327482602756803e-01,
- 5.39606666106428600749e-01,  5.39748984472854020922e-01,
- 5.39891282587644072422e-01,  5.40033560456561589902e-01,
- 5.40175818085366854504e-01,  5.40318055479817593856e-01,
- 5.40460272645669204117e-01,  5.40602469588674527934e-01,
- 5.40744646314584076485e-01,  5.40886802829145696414e-01,
- 5.41028939138105124940e-01,  5.41171055247205212702e-01,
- 5.41313151162186700915e-01,  5.41455226888787888306e-01,
- 5.41597282432744409064e-01,  5.41739317799789454888e-01,
- 5.41881332995654108053e-01,  5.42023328026066675278e-01,
- 5.42165302896753020789e-01,  5.42307257613436899391e-01,
- 5.42449192181839179305e-01,  5.42591106607678730356e-01,
- 5.42733000896671757829e-01,  5.42874875054531913499e-01,
- 5.43016729086970628693e-01,  5.43158562999696892248e-01,
- 5.43300376798417139490e-01,  5.43442170488835474274e-01,
- 5.43583944076653557964e-01,  5.43725697567570720459e-01,
- 5.43867430967283516097e-01,  5.44009144281486500816e-01,
- 5.44150837515871677041e-01,  5.44292510676128493685e-01,
- 5.44434163767944068191e-01,  5.44575796797003186533e-01,
- 5.44717409768987970153e-01,  5.44859002689578542089e-01,
- 5.45000575564452249822e-01,  5.45142128399284109364e-01,
- 5.45283661199746805259e-01,  5.45425173971510579563e-01,
- 5.45566666720243342859e-01,  5.45708139451610341197e-01,
- 5.45849592171274711205e-01,  5.45991024884897147018e-01,
- 5.46132437598135678236e-01,  5.46273830316646225036e-01,
- 5.46415203046082265104e-01,  5.46556555792094611590e-01,
- 5.46697888560332190266e-01,  5.46839201356441040325e-01,
- 5.46980494186064980511e-01,  5.47121767054845498102e-01,
- 5.47263019968421748906e-01,  5.47404252932430224199e-01,
- 5.47545465952505305829e-01,  5.47686659034278933156e-01,
- 5.47827832183380492026e-01,  5.47968985405437147840e-01,
- 5.48110118706073623507e-01,  5.48251232090912310468e-01,
- 5.48392325565573157675e-01,  5.48533399135673782610e-01,
- 5.48674452806829471285e-01,  5.48815486584652956203e-01,
- 5.48956500474754749419e-01,  5.49097494482743031519e-01,
- 5.49238468614223429576e-01,  5.49379422874799350218e-01,
- 5.49520357270071757583e-01,  5.49661271805639173316e-01,
- 5.49802166487098009640e-01,  5.49943041320042236286e-01,
- 5.50083896310063047430e-01,  5.50224731462749860889e-01,
- 5.50365546783689540966e-01,  5.50506342278466287432e-01,
- 5.50647117952662301654e-01,  5.50787873811857342510e-01,
- 5.50928609861628726385e-01,  5.51069326107551438199e-01,
- 5.51210022555198242422e-01,  5.51350699210139350015e-01,
- 5.51491356077942862512e-01,  5.51631993164174216915e-01,
- 5.51772610474396740798e-01,  5.51913208014171430271e-01,
- 5.52053785789056838951e-01,  5.52194343804609077964e-01,
- 5.52334882066382037991e-01,  5.52475400579927389266e-01,
- 5.52615899350794248512e-01,  5.52756378384529512005e-01,
- 5.52896837686677744550e-01,  5.53037277262781068465e-01,
- 5.53177697118379274599e-01,  5.53318097259010044375e-01,
- 5.53458477690208505706e-01,  5.53598838417507566056e-01,
- 5.53739179446437690402e-01,  5.53879500782527012248e-01,
- 5.54019802431301555679e-01,  5.54160084398284791263e-01,
- 5.54300346688997858102e-01,  5.54440589308959896897e-01,
- 5.54580812263687272790e-01,  5.54721015558694352521e-01,
- 5.54861199199493171363e-01,  5.55001363191593100055e-01,
- 5.55141507540501621953e-01,  5.55281632251723666904e-01,
- 5.55421737330761944307e-01,  5.55561822783116832092e-01,
- 5.55701888614286376722e-01,  5.55841934829766293191e-01,
- 5.55981961435050076048e-01,  5.56121968435628777350e-01,
- 5.56261955836991228708e-01,  5.56401923644624041287e-01,
- 5.56541871864011383764e-01,  5.56681800500635093343e-01,
- 5.56821709559974897807e-01,  5.56961599047508082450e-01,
- 5.57101468968709601093e-01,  5.57241319329052187115e-01,
- 5.57381150134006353447e-01,  5.57520961389040059508e-01,
- 5.57660753099619377338e-01,  5.57800525271207603417e-01,
- 5.57940277909266035827e-01,  5.58080011019253752202e-01,
- 5.58219724606627387686e-01,  5.58359418676841245954e-01,
- 5.58499093235347632280e-01,  5.58638748287596076381e-01,
- 5.58778383839034331615e-01,  5.58917999895107486807e-01,
- 5.59057596461258632381e-01,  5.59197173542928527290e-01,
- 5.59336731145555376976e-01,  5.59476269274575499502e-01,
- 5.59615787935422659416e-01,  5.59755287133528511845e-01,
- 5.59894766874322380446e-01,  5.60034227163231146385e-01,
- 5.60173668005679803450e-01,  5.60313089407090680893e-01,
- 5.60452491372884220588e-01,  5.60591873908478199873e-01,
- 5.60731237019288286660e-01,  5.60870580710728150464e-01,
- 5.61009904988208907284e-01,  5.61149209857139341651e-01,
- 5.61288495322926128672e-01,  5.61427761390973834033e-01,
- 5.61567008066684469902e-01,  5.61706235355457939029e-01,
- 5.61845443262691812691e-01,  5.61984631793781552744e-01,
- 5.62123800954120289575e-01,  5.62262950749098933123e-01,
- 5.62402081184105950840e-01,  5.62541192264527811773e-01,
- 5.62680283995748653503e-01,  5.62819356383150282142e-01,
- 5.62958409432112505399e-01,  5.63097443148012466452e-01,
- 5.63236457536225532117e-01,  5.63375452602124515700e-01,
- 5.63514428351080010060e-01,  5.63653384788460498633e-01,
- 5.63792321919632244409e-01,  5.63931239749959178909e-01,
- 5.64070138284803013207e-01,  5.64209017529523126910e-01,
- 5.64347877489476790203e-01,  5.64486718170019163843e-01,
- 5.64625539576502966099e-01,  5.64764341714278694795e-01,
- 5.64903124588694849351e-01,  5.65041888205097375675e-01,
- 5.65180632568830110252e-01,  5.65319357685234891164e-01,
- 5.65458063559651002983e-01,  5.65596750197415842898e-01,
- 5.65735417603864143565e-01,  5.65874065784328972306e-01,
- 5.66012694744140620884e-01,  5.66151304488627493683e-01,
- 5.66289895023115885664e-01,  5.66428466352929538274e-01,
- 5.66567018483390194561e-01,  5.66705551419817266101e-01,
- 5.66844065167528166072e-01,  5.66982559731837976180e-01,
- 5.67121035118059335645e-01,  5.67259491331503107325e-01,
- 5.67397928377477600570e-01,  5.67536346261289237347e-01,
- 5.67674744988241775090e-01,  5.67813124563637305897e-01,
- 5.67951484992775368355e-01,  5.68089826280953391624e-01,
- 5.68228148433466695444e-01,  5.68366451455608157062e-01,
- 5.68504735352668766346e-01,  5.68643000129937070675e-01,
- 5.68781245792699508002e-01,  5.68919472346240517879e-01,
- 5.69057679795841986348e-01,  5.69195868146784023089e-01,
- 5.69334037404344073252e-01,  5.69472187573797694604e-01,
- 5.69610318660418335490e-01,  5.69748430669477001764e-01,
- 5.69886523606242811901e-01,  5.70024597475982330863e-01,
- 5.70162652283960236232e-01,  5.70300688035438985146e-01,
- 5.70438704735678814295e-01,  5.70576702389937739923e-01,
- 5.70714681003471557830e-01,  5.70852640581534065412e-01,
- 5.70990581129376728597e-01,  5.71128502652249014915e-01,
- 5.71266405155397949400e-01,  5.71404288644068669711e-01,
- 5.71542153123503982037e-01,  5.71679998598944472121e-01,
- 5.71817825075628838327e-01,  5.71955632558793225506e-01,
- 5.72093421053671891130e-01,  5.72231190565496872225e-01,
- 5.72368941099498096392e-01,  5.72506672660903048744e-01,
- 5.72644385254937327012e-01,  5.72782078886824419506e-01,
- 5.72919753561785483065e-01,  5.73057409285039565106e-01,
- 5.73195046061803492599e-01,  5.73332663897292205135e-01,
- 5.73470262796718088794e-01,  5.73607842765291753295e-01,
- 5.73745403808221365871e-01,  5.73882945930713095350e-01,
- 5.74020469137971001139e-01,  5.74157973435197033218e-01,
- 5.74295458827590588058e-01,  5.74432925320349507814e-01,
- 5.74570372918669192153e-01,  5.74707801627742709272e-01,
- 5.74845211452761462034e-01,  5.74982602398914188768e-01,
- 5.75119974471387962467e-01,  5.75257327675367413633e-01,
- 5.75394662016035063345e-01,  5.75531977498571434282e-01,
- 5.75669274128154828674e-01,  5.75806551909961439328e-01,
- 5.75943810849165349630e-01,  5.76081050950938422517e-01,
- 5.76218272220450522525e-01,  5.76355474662869182723e-01,
- 5.76492658283360159821e-01,  5.76629823087086545996e-01,
- 5.76766969079209990134e-01,  5.76904096264889365564e-01,
- 5.77041204649281769257e-01,  5.77178294237542299783e-01,
- 5.77315365034823613222e-01,  5.77452417046276367252e-01,
- 5.77589450277049221150e-01,  5.77726464732288613746e-01,
- 5.77863460417138763425e-01,  5.78000437336742001193e-01,
- 5.78137395496238437609e-01,  5.78274334900766073808e-01,
- 5.78411255555460690481e-01,  5.78548157465456180937e-01,
- 5.78685040635884107019e-01,  5.78821905071874143189e-01,
- 5.78958750778553632443e-01,  5.79095577761048030396e-01,
- 5.79232386024480461195e-01,  5.79369175573972161608e-01,
- 5.79505946414642258979e-01,  5.79642698551607438162e-01,
- 5.79779431989982829698e-01,  5.79916146734881010616e-01,
- 5.80052842791412559542e-01,  5.80189520164686278747e-01,
- 5.80326178859808416988e-01,  5.80462818881883446664e-01,
- 5.80599440236013508709e-01,  5.80736042927298967697e-01,
- 5.80872626960837856736e-01,  5.81009192341726099507e-01,
- 5.81145739075057621292e-01,  5.81282267165924348973e-01,
- 5.81418776619415988982e-01,  5.81555267440620138331e-01,
- 5.81691739634622506649e-01,  5.81828193206506472102e-01,
- 5.81964628161353414448e-01,  5.82101044504242826072e-01,
- 5.82237442240251867887e-01,  5.82373821374455813427e-01,
- 5.82510181911927604759e-01,  5.82646523857738407592e-01,
- 5.82782847216957056169e-01,  5.82919151994650497350e-01,
- 5.83055438195883679597e-01,  5.83191705825719108880e-01,
- 5.83327954889217514811e-01,  5.83464185391437628603e-01,
- 5.83600397337435849998e-01,  5.83736590732266802384e-01,
- 5.83872765580982666656e-01,  5.84008921888633958375e-01,
- 5.84145059660268861634e-01,  5.84281178900933673148e-01,
- 5.84417279615672580206e-01,  5.84553361809527549653e-01,
- 5.84689425487538660953e-01,  5.84825470654743884147e-01,
- 5.84961497316179301897e-01,  5.85097505476878554376e-01,
- 5.85233495141873616419e-01,  5.85369466316194131394e-01,
- 5.85505419004867966315e-01,  5.85641353212920767746e-01,
- 5.85777268945375961806e-01,  5.85913166207255309281e-01,
- 5.86049045003578239488e-01,  5.86184905339362183341e-01,
- 5.86320747219622684376e-01,  5.86456570649373176707e-01,
- 5.86592375633624762976e-01,  5.86728162177386880494e-01,
- 5.86863930285666857145e-01,  5.86999679963469911392e-01,
- 5.87135411215799041251e-01,  5.87271124047655579403e-01,
- 5.87406818464038527061e-01,  5.87542494469945109081e-01,
- 5.87678152070370218851e-01,  5.87813791270306862380e-01,
- 5.87949412074746158297e-01,  5.88085014488676893762e-01,
- 5.88220598517086079582e-01,  5.88356164164958506113e-01,
- 5.88491711437277187358e-01,  5.88627240339022916871e-01,
- 5.88762750875174489806e-01,  5.88898243050708591895e-01,
- 5.89033716870600132509e-01,  5.89169172339821800577e-01,
- 5.89304609463344397646e-01,  5.89440028246136504819e-01,
- 5.89575428693164815819e-01,  5.89710810809394025966e-01,
- 5.89846174599786832182e-01,  5.89981520069303932985e-01,
- 5.90116847222903695425e-01,  5.90252156065543043262e-01,
- 5.90387446602176346744e-01,  5.90522718837756310784e-01,
- 5.90657972777233530870e-01,  5.90793208425556493069e-01,
- 5.90928425787671796066e-01,  5.91063624868523929123e-01,
- 5.91198805673055605148e-01,  5.91333968206207205576e-01,
- 5.91469112472917446510e-01,  5.91604238478122712586e-01,
- 5.91739346226757612079e-01,  5.91874435723754643845e-01,
- 5.92009506974044419358e-01,  5.92144559982555440669e-01,
- 5.92279594754214322450e-01,  5.92414611293945458925e-01,
- 5.92549609606671578987e-01,  5.92684589697313191081e-01,
- 5.92819551570788805250e-01,  5.92954495232015155182e-01,
- 5.93089420685906643094e-01,  5.93224327937376005870e-01,
- 5.93359216991333870972e-01,  5.93494087852688756435e-01,
- 5.93628940526347403939e-01,  5.93763775017214334717e-01,
- 5.93898591330192404669e-01,  5.94033389470182138226e-01,
- 5.94168169442082394482e-01,  5.94302931250789812090e-01,
- 5.94437674901199142319e-01,  5.94572400398203249061e-01,
- 5.94707107746692775763e-01,  5.94841796951556700535e-01,
- 5.94976468017681670020e-01,  5.95111120949952776549e-01,
- 5.95245755753252669962e-01,  5.95380372432462556809e-01,
- 5.95514970992461090127e-01,  5.95649551438125590686e-01,
- 5.95784113774330714719e-01,  5.95918658005949786194e-01,
- 5.96053184137853686586e-01,  5.96187692174911743059e-01,
- 5.96322182121990951309e-01,  5.96456653983956530674e-01,
- 5.96591107765671591068e-01,  5.96725543471997688094e-01,
- 5.96859961107793823842e-01,  5.96994360677917557112e-01,
- 5.97128742187224115234e-01,  5.97263105640566949184e-01,
- 5.97397451042797622556e-01,  5.97531778398765700544e-01,
- 5.97666087713318527896e-01,  5.97800378991301784026e-01,
- 5.97934652237559260968e-01,  5.98068907456932641331e-01,
- 5.98203144654261498303e-01,  5.98337363834383739736e-01,
- 5.98471565002135386102e-01,  5.98605748162350126407e-01,
- 5.98739913319859984320e-01,  5.98874060479495096132e-01,
- 5.99008189646083377689e-01,  5.99142300824451079500e-01,
- 5.99276394019422453674e-01,  5.99410469235819531875e-01,
- 5.99544526478462791452e-01,  5.99678565752170600334e-01,
- 5.99812587061759439067e-01,  5.99946590412043678775e-01,
- 6.00080575807836025248e-01,  6.00214543253947074852e-01,
- 6.00348492755185425551e-01,  6.00482424316358009975e-01,
- 6.00616337942269540306e-01,  6.00750233637722952373e-01,
- 6.00884111407519294623e-01,  6.01017971256457506080e-01,
- 6.01151813189334860432e-01,  6.01285637210946410924e-01,
- 6.01419443326085545465e-01,  6.01553231539543431516e-01,
- 6.01687001856109793252e-01,  6.01820754280571801331e-01,
- 6.01954488817715294147e-01,  6.02088205472323889644e-01,
- 6.02221904249179207369e-01,  6.02355585153061201531e-01,
- 6.02489248188747716917e-01,  6.02622893361014821956e-01,
- 6.02756520674636475654e-01,  6.02890130134384971683e-01,
- 6.03023721745030605312e-01,  6.03157295511341451366e-01,
- 6.03290851438084252401e-01,  6.03424389530023419503e-01,
- 6.03557909791921476383e-01,  6.03691412228539170393e-01,
- 6.03824896844635472526e-01,  6.03958363644967022310e-01,
- 6.04091812634289015982e-01,  6.04225243817354318310e-01,
- 6.04358657198914350772e-01,  6.04492052783718314402e-01,
- 6.04625430576513633874e-01,  6.04758790582045624440e-01,
- 6.04892132805058047040e-01,  6.05025457250292553191e-01,
- 6.05158763922488907028e-01,  6.05292052826384985309e-01,
- 6.05425323966716888435e-01,  6.05558577348218607384e-01,
- 6.05691812975622467796e-01,  6.05825030853658685892e-01,
- 6.05958230987055701533e-01,  6.06091413380540178224e-01,
- 6.06224578038836670046e-01,  6.06357724966668065747e-01,
- 6.06490854168755144649e-01,  6.06623965649816909718e-01,
- 6.06757059414570476541e-01,  6.06890135467731184349e-01,
- 6.07023193814012262948e-01,  6.07156234458125165787e-01,
- 6.07289257404779569960e-01,  6.07422262658683154157e-01,
- 6.07555250224541820714e-01,  6.07688220107059362540e-01,
- 6.07821172310938018235e-01,  6.07954106840877805951e-01,
- 6.08087023701577300550e-01,  6.08219922897732745426e-01,
- 6.08352804434038829662e-01,  6.08485668315188243938e-01,
- 6.08618514545871902577e-01,  6.08751343130778610480e-01,
- 6.08884154074595507211e-01,  6.09016947382007955980e-01,
- 6.09149723057699321593e-01,  6.09282481106350970457e-01,
- 6.09415221532642714664e-01,  6.09547944341252145861e-01,
- 6.09680649536855301385e-01,  6.09813337124126220168e-01,
- 6.09946007107737053765e-01,  6.10078659492358177374e-01,
- 6.10211294282658078814e-01,  6.10343911483303358523e-01,
- 6.10476511098958729562e-01,  6.10609093134287128635e-01,
- 6.10741657593949716087e-01,  6.10874204482605542843e-01,
- 6.11006733804912105512e-01,  6.11139245565524680259e-01,
- 6.11271739769097099959e-01,  6.11404216420281088062e-01,
- 6.11536675523726702686e-01,  6.11669117084081892521e-01,
- 6.11801541105992940928e-01,  6.11933947594104243883e-01,
- 6.12066336553058421011e-01,  6.12198707987496204552e-01,
- 6.12331061902056439372e-01,  6.12463398301376193977e-01,
- 6.12595717190090538473e-01,  6.12728018572832988653e-01,
- 6.12860302454234950886e-01,  6.12992568838926166208e-01,
- 6.13124817731534488274e-01,  6.13257049136685772339e-01,
- 6.13389263059004430367e-01,  6.13521459503112542855e-01,
- 6.13653638473630858030e-01,  6.13785799975177903676e-01,
- 6.13917944012370542239e-01,  6.14050070589823748790e-01,
- 6.14182179712150722040e-01,  6.14314271383962884343e-01,
- 6.14446345609869770676e-01,  6.14578402394478917614e-01,
- 6.14710441742396418441e-01,  6.14842463658226145995e-01,
- 6.14974468146570418803e-01,  6.15106455212029668012e-01,
- 6.15238424859202437389e-01,  6.15370377092685383325e-01,
- 6.15502311917073607894e-01,  6.15634229336960214773e-01,
- 6.15766129356936420258e-01,  6.15898011981591775310e-01,
- 6.16029877215514054534e-01,  6.16161725063288923110e-01,
- 6.16293555529500491907e-01,  6.16425368618731095438e-01,
- 6.16557164335561069812e-01,  6.16688942684569085806e-01,
- 6.16820703670331926816e-01,  6.16952447297424488859e-01,
- 6.17084173570420113641e-01,  6.17215882493890033444e-01,
- 6.17347574072403926237e-01,  6.17479248310529471588e-01,
- 6.17610905212832794753e-01,  6.17742544783877911563e-01,
- 6.17874167028227172516e-01,  6.18005771950441151752e-01,
- 6.18137359555078758078e-01,  6.18268929846696679853e-01,
- 6.18400482829850384192e-01,  6.18532018509092895719e-01,
- 6.18663536888976017813e-01,  6.18795037974049555451e-01,
- 6.18926521768861204187e-01,  6.19057988277957438328e-01,
- 6.19189437505882511736e-01,  6.19320869457179012940e-01,
- 6.19452284136387754110e-01,  6.19583681548047882082e-01,
- 6.19715061696696434268e-01,  6.19846424586868893769e-01,
- 6.19977770223098967328e-01,  6.20109098609918474310e-01,
- 6.20240409751857568743e-01,  6.20371703653444406257e-01,
- 6.20502980319205588167e-01,  6.20634239753665939432e-01,
- 6.20765481961348286610e-01,  6.20896706946773790925e-01,
- 6.21027914714461837242e-01,  6.21159105268930034072e-01,
- 6.21290278614694324588e-01,  6.21421434756268653565e-01,
- 6.21552573698165300442e-01,  6.21683695444894879323e-01,
- 6.21814800000966005911e-01,  6.21945887370885630574e-01,
- 6.22076957559158927324e-01,  6.22208010570289515861e-01,
- 6.22339046408778795438e-01,  6.22470065079126610996e-01,
- 6.22601066585831364186e-01,  6.22732050933389125191e-01,
- 6.22863018126294520904e-01,  6.22993968169040401861e-01,
- 6.23124901066117842241e-01,  6.23255816822016028844e-01,
- 6.23386715441222483136e-01,  6.23517596928222950226e-01,
- 6.23648461287501509887e-01,  6.23779308523540354514e-01,
- 6.23910138640819900147e-01,  6.24040951643819008510e-01,
- 6.24171747537014431906e-01,  6.24302526324881368325e-01,
- 6.24433288011893461444e-01,  6.24564032602522356541e-01,
- 6.24694760101237811512e-01,  6.24825470512508140963e-01,
- 6.24956163840799772125e-01,  6.25086840090577355866e-01,
- 6.25217499266303877725e-01,  6.25348141372440435859e-01,
- 6.25478766413446463091e-01,  6.25609374393779726908e-01,
- 6.25739965317896107422e-01,  6.25870539190249819406e-01,
- 6.26001096015293301278e-01,  6.26131635797477215100e-01,
- 6.26262158541250557597e-01,  6.26392664251060549141e-01,
- 6.26523152931352744766e-01,  6.26653624586570812127e-01,
- 6.26784079221156642525e-01,  6.26914516839550683969e-01,
- 6.27044937446191386066e-01,  6.27175341045515533089e-01,
- 6.27305727641958132956e-01,  6.27436097239952639271e-01,
- 6.27566449843930396213e-01,  6.27696785458321526718e-01,
- 6.27827104087553933276e-01,  6.27957405736054186107e-01,
- 6.28087690408246857032e-01,  6.28217958108554741514e-01,
- 6.28348208841399302749e-01,  6.28478442611199783485e-01,
- 6.28608659422374094206e-01,  6.28738859279338258013e-01,
- 6.28869042186506410630e-01,  6.28999208148291244491e-01,
- 6.29129357169103564651e-01,  6.29259489253352510829e-01,
- 6.29389604405445557411e-01,  6.29519702629788291404e-01,
- 6.29649783930784745500e-01,  6.29779848312837065016e-01,
- 6.29909895780345951977e-01,  6.30039926337710110005e-01,
- 6.30169939989326688412e-01,  6.30299936739590949131e-01,
- 6.30429916592896710803e-01,  6.30559879553635904692e-01,
- 6.30689825626198685704e-01,  6.30819754814973654433e-01,
- 6.30949667124347746139e-01,  6.31079562558705897679e-01,
- 6.31209441122431491600e-01,  6.31339302819906356135e-01,
- 6.31469147655510432138e-01,  6.31598975633622106152e-01,
- 6.31728786758617766317e-01,  6.31858581034872357485e-01,
- 6.31988358466759159171e-01,  6.32118119058649563513e-01,
- 6.32247862814913297314e-01,  6.32377589739918422040e-01,
- 6.32507299838031444850e-01,  6.32636993113616874496e-01,
- 6.32766669571037776443e-01,  6.32896329214655439799e-01,
- 6.33025972048829377314e-01,  6.33155598077917547428e-01,
- 6.33285207306276021200e-01,  6.33414799738259315376e-01,
- 6.33544375378220392392e-01,  6.33673934230510105259e-01,
- 6.33803476299478196765e-01,  6.33933001589472078230e-01,
- 6.34062510104837939728e-01,  6.34192001849920194978e-01,
- 6.34321476829061370317e-01,  6.34450935046602548795e-01,
- 6.34580376506882926080e-01,  6.34709801214240143530e-01,
- 6.34839209173010177167e-01,  6.34968600387527226658e-01,
- 6.35097974862123937356e-01,  6.35227332601131067236e-01,
- 6.35356673608877819959e-01,  6.35485997889691733853e-01,
- 6.35615305447898681912e-01,  6.35744596287822760772e-01,
- 6.35873870413786512756e-01,  6.36003127830110703833e-01,
- 6.36132368541114545657e-01,  6.36261592551115362504e-01,
- 6.36390799864429035360e-01,  6.36519990485369668853e-01,
- 6.36649164418249702280e-01,  6.36778321667379798576e-01,
- 6.36907462237069177391e-01,  6.37036586131625282015e-01,
- 6.37165693355353779381e-01,  6.37294783912558782113e-01,
- 6.37423857807542737497e-01,  6.37552915044606427486e-01,
- 6.37681955628048968698e-01,  6.37810979562167701395e-01,
- 6.37939986851258411527e-01,  6.38068977499615330728e-01,
- 6.38197951511530692237e-01,  6.38326908891295508042e-01,
- 6.38455849643198680710e-01,  6.38584773771527891562e-01,
- 6.38713681280568712495e-01,  6.38842572174605605184e-01,
- 6.38971446457920699835e-01,  6.39100304134795127453e-01,
- 6.39229145209507909620e-01,  6.39357969686336624626e-01,
- 6.39486777569557185430e-01,  6.39615568863443728631e-01,
- 6.39744343572268947540e-01,  6.39873101700303648087e-01,
- 6.40001843251817081892e-01,  6.40130568231077057284e-01,
- 6.40259276642349384190e-01,  6.40387968489898540270e-01,
- 6.40516643777987004782e-01,  6.40645302510875924717e-01,
- 6.40773944692824781733e-01,  6.40902570328091170104e-01,
- 6.41031179420931240820e-01,  6.41159771975599590554e-01,
- 6.41288347996348928604e-01,  6.41416907487430409951e-01,
- 6.41545450453093524246e-01,  6.41673976897586428869e-01,
- 6.41802486825155171779e-01,  6.41930980240044468665e-01,
- 6.42059457146497258861e-01,  6.42187917548755038410e-01,
- 6.42316361451057304954e-01,  6.42444788857642334889e-01,
- 6.42573199772746628256e-01,  6.42701594200604797713e-01,
- 6.42829972145450234677e-01,  6.42958333611514443184e-01,
- 6.43086678603027261936e-01,  6.43215007124217197365e-01,
- 6.43343319179310868527e-01,  6.43471614772533229143e-01,
- 6.43599893908107678620e-01,  6.43728156590256284098e-01,
- 6.43856402823198892271e-01,  6.43984632611154350634e-01,
- 6.44112845958339397257e-01,  6.44241042868969437940e-01,
- 6.44369223347258102130e-01,  6.44497387397417575983e-01,
- 6.44625535023658158273e-01,  6.44753666230188704489e-01,
- 6.44881781021216515803e-01,  6.45009879400947228056e-01,
- 6.45137961373584700731e-01,  6.45266026943331350019e-01,
- 6.45394076114387926779e-01,  6.45522108890953627558e-01,
- 6.45650125277225872544e-01,  6.45778125277400638637e-01,
- 6.45906108895672126380e-01,  6.46034076136233315069e-01,
- 6.46162027003274963555e-01,  6.46289961500986720466e-01,
- 6.46417879633556458074e-01,  6.46545781405170272294e-01,
- 6.46673666820013037793e-01,  6.46801535882267741862e-01,
- 6.46929388596115706456e-01,  6.47057224965736921263e-01,
- 6.47185044995309599614e-01,  6.47312848689010289505e-01,
- 6.47440636051014095642e-01,  6.47568407085494457398e-01,
- 6.47696161796623148810e-01,  6.47823900188570500625e-01,
- 6.47951622265505067233e-01,  6.48079328031593959736e-01,
- 6.48207017491002623899e-01,  6.48334690647894840154e-01,
- 6.48462347506432945643e-01,  6.48589988070777501150e-01,
- 6.48717612345087624171e-01,  6.48845220333520877887e-01,
- 6.48972812040233049125e-01,  6.49100387469378481420e-01,
- 6.49227946625109852974e-01,  6.49355489511578287676e-01,
- 6.49483016132933244080e-01,  6.49610526493322737451e-01,
- 6.49738020596893228742e-01,  6.49865498447789291525e-01,
- 6.49992960050154167106e-01,  6.50120405408129542479e-01,
- 6.50247834525855328280e-01,  6.50375247407469991856e-01,
- 6.50502644057110446241e-01,  6.50630024478911828112e-01,
- 6.50757388677007941880e-01,  6.50884736655530926619e-01,
- 6.51012068418611256071e-01,  6.51139383970377849664e-01,
- 6.51266683314958072515e-01,  6.51393966456477846450e-01,
- 6.51521233399061316938e-01,  6.51648484146831186159e-01,
- 6.51775718703908490959e-01,  6.51902937074412824892e-01,
- 6.52030139262461894134e-01,  6.52157325272172294639e-01,
- 6.52284495107658734980e-01,  6.52411648773034480442e-01,
- 6.52538786272411130973e-01,  6.52665907609898732211e-01,
- 6.52793012789605997526e-01,  6.52920101815639641885e-01,
- 6.53047174692105159011e-01,  6.53174231423106488315e-01,
- 6.53301272012745681828e-01,  6.53428296465123459313e-01,
- 6.53555304784339097246e-01,  6.53682296974490095742e-01,
- 6.53809273039672400607e-01,  6.53936232983980625377e-01,
- 6.54063176811507496211e-01,  6.54190104526344406999e-01,
- 6.54317016132581086296e-01,  6.54443911634305819369e-01,
- 6.54570791035605337171e-01,  6.54697654340564483277e-01,
- 6.54824501553267102061e-01,  6.54951332677795039494e-01,
- 6.55078147718228809282e-01,  6.55204946678647148772e-01,
- 6.55331729563127685090e-01,  6.55458496375745935936e-01,
- 6.55585247120576197766e-01,  6.55711981801691323746e-01,
- 6.55838700423162279662e-01,  6.55965402989058699035e-01,
- 6.56092089503448661070e-01,  6.56218759970398801684e-01,
- 6.56345414393973758393e-01,  6.56472052778237280535e-01,
- 6.56598675127251008021e-01,  6.56725281445075359521e-01,
- 6.56851871735769199390e-01,  6.56978446003389615626e-01,
- 6.57105004251992363962e-01,  6.57231546485631645815e-01,
- 6.57358072708359997272e-01,  6.57484582924228733170e-01,
- 6.57611077137287058925e-01,  6.57737555351583291774e-01,
- 6.57864017571163861575e-01,  6.57990463800073532852e-01,
- 6.58116894042355848882e-01,  6.58243308302052687608e-01,
- 6.58369706583204372663e-01,  6.58496088889849673365e-01,
- 6.58622455226025915742e-01,  6.58748805595768760490e-01,
- 6.58875140003112647058e-01,  6.59001458452090016493e-01,
- 6.59127760946732199621e-01,  6.59254047491068750908e-01,
- 6.59380318089127781533e-01,  6.59506572744935959385e-01,
- 6.59632811462518287016e-01,  6.59759034245898212667e-01,
- 6.59885241099097852313e-01,  6.60011432026137656592e-01,
- 6.60137607031036632854e-01,  6.60263766117812123113e-01,
- 6.60389909290480248139e-01,  6.60516036553055130298e-01,
- 6.60642147909550003781e-01,  6.60768243363975882332e-01,
- 6.60894322920342891514e-01,  6.61020386582659269514e-01,
- 6.61146434354931700206e-01,  6.61272466241165757239e-01,
- 6.61398482245365015864e-01,  6.61524482371531830083e-01,
- 6.61650466623666999588e-01,  6.61776435005769658737e-01,
- 6.61902387521837720641e-01,  6.62028324175867211032e-01,
- 6.62154244971853045421e-01,  6.62280149913788362959e-01,
- 6.62406039005664859509e-01,  6.62531912251472676623e-01,
- 6.62657769655200512560e-01,  6.62783611220835733313e-01,
- 6.62909436952363706475e-01,  6.63035246853768911457e-01,
- 6.63161040929033829272e-01,  6.63286819182139719686e-01,
- 6.63412581617066288153e-01,  6.63538328237791463771e-01,
- 6.63664059048292176435e-01,  6.63789774052543579685e-01,
- 6.63915473254519050705e-01,  6.64041156658191078499e-01,
- 6.64166824267530264692e-01,  6.64292476086505656596e-01,
- 6.64418112119084969258e-01,  6.64543732369234474433e-01,
- 6.64669336840918778542e-01,  6.64794925538101155738e-01,
- 6.64920498464743214839e-01,  6.65046055624805232398e-01,
- 6.65171597022245819630e-01,  6.65297122661022366508e-01,
- 6.65422632545090486644e-01,  6.65548126678404461387e-01,
- 6.65673605064917017771e-01,  6.65799067708579439540e-01,
- 6.65924514613341678171e-01,  6.66049945783151686740e-01,
- 6.66175361221956641167e-01,  6.66300760933701607946e-01,
- 6.66426144922330543352e-01,  6.66551513191785738321e-01,
- 6.66676865746008262548e-01,  6.66802202588937187322e-01,
- 6.66927523724510695757e-01,  6.67052829156665194610e-01,
- 6.67178118889335536323e-01,  6.67303392926455130052e-01,
- 6.67428651271956163704e-01,  6.67553893929769048832e-01,
- 6.67679120903822864719e-01,  6.67804332198045247360e-01,
- 6.67929527816362167414e-01,  6.68054707762698263274e-01,
- 6.68179872040976619019e-01,  6.68305020655119097484e-01,
- 6.68430153609045785146e-01,  6.68555270906675325193e-01,
- 6.68680372551925139568e-01,  6.68805458548710873856e-01,
- 6.68930528900946952398e-01,  6.69055583612546245220e-01,
- 6.69180622687419957018e-01,  6.69305646129478182260e-01,
- 6.69430653942629239062e-01,  6.69555646130780224290e-01,
- 6.69680622697836569479e-01,  6.69805583647702484917e-01,
- 6.69930528984280293514e-01,  6.70055458711471318978e-01,
- 6.70180372833175219682e-01,  6.70305271353290099690e-01,
- 6.70430154275712841816e-01,  6.70555021604338552521e-01,
- 6.70679873343061228042e-01,  6.70804709495773088257e-01,
- 6.70929530066365131802e-01,  6.71054335058726802998e-01,
- 6.71179124476746102879e-01,  6.71303898324309589185e-01,
- 6.71428656605302376370e-01,  6.71553399323607913551e-01,
- 6.71678126483108539624e-01,  6.71802838087684928148e-01,
- 6.71927534141216420416e-01,  6.72052214647580803408e-01,
- 6.72176879610654420816e-01,  6.72301529034312284061e-01,
- 6.72426162922427739232e-01,  6.72550781278872911173e-01,
- 6.72675384107518370413e-01,  6.72799971412233133172e-01,
- 6.72924543196884994423e-01,  6.73049099465340305848e-01,
- 6.73173640221463642774e-01,  6.73298165469118470305e-01,
- 6.73422675212166699232e-01,  6.73547169454468797056e-01,
- 6.73671648199883787989e-01,  6.73796111452269252950e-01,
- 6.73920559215481329574e-01,  6.74044991493374712199e-01,
- 6.74169408289802651879e-01,  6.74293809608617067397e-01,
- 6.74418195453668323225e-01,  6.74542565828805340544e-01,
- 6.74666920737875597247e-01,  6.74791260184725238958e-01,
- 6.74915584173198968010e-01,  6.75039892707139821404e-01,
- 6.75164185790389836939e-01,  6.75288463426789165034e-01,
- 6.75412725620176734864e-01,  6.75536972374390143337e-01,
- 6.75661203693265322023e-01,  6.75785419580636981252e-01,
- 6.75909620040338388058e-01,  6.76033805076201144146e-01,
- 6.76157974692055740995e-01,  6.76282128891731004749e-01,
- 6.76406267679054540309e-01,  6.76530391057852287240e-01,
- 6.76654499031948852839e-01,  6.76778591605167623158e-01,
- 6.76902668781330207892e-01,  6.77026730564257217537e-01,
- 6.77150776957767375208e-01,  6.77274807965678293797e-01,
- 6.77398823591806142908e-01,  6.77522823839965537829e-01,
- 6.77646808713969761584e-01,  6.77770778217630653906e-01,
- 6.77894732354758722259e-01,  6.78018671129162808775e-01,
- 6.78142594544650756383e-01,  6.78266502605028631656e-01,
- 6.78390395314101168900e-01,  6.78514272675671770152e-01,
- 6.78638134693542394160e-01,  6.78761981371513556383e-01,
- 6.78885812713384440009e-01,  6.79009628722952562896e-01,
- 6.79133429404014443698e-01,  6.79257214760364935735e-01,
- 6.79380984795797338016e-01,  6.79504739514103950349e-01,
- 6.79628478919075296183e-01,  6.79752203014500677725e-01,
- 6.79875911804167953889e-01,  6.79999605291863540302e-01,
- 6.80123283481372520320e-01,  6.80246946376478422991e-01,
- 6.80370593980963667136e-01,  6.80494226298608895220e-01,
- 6.80617843333193639488e-01,  6.80741445088495988891e-01,
- 6.80865031568292367048e-01,  6.80988602776358198376e-01,
- 6.81112158716467130937e-01,  6.81235699392391813589e-01,
- 6.81359224807903118837e-01,  6.81482734966770586915e-01,
- 6.81606229872762758859e-01,  6.81729709529646177302e-01,
- 6.81853173941186385676e-01,  6.81976623111147484124e-01,
- 6.82100057043292129499e-01,  6.82223475741381535364e-01,
- 6.82346879209175583014e-01,  6.82470267450432710454e-01,
- 6.82593640468910134445e-01,  6.82716998268363406410e-01,
- 6.82840340852546967554e-01,  6.82963668225213593743e-01,
- 6.83086980390114839601e-01,  6.83210277351001038504e-01,
- 6.83333559111620636450e-01,  6.83456825675721302282e-01,
- 6.83580077047048817462e-01,  6.83703313229347853230e-01,
- 6.83826534226361637536e-01,  6.83949740041831955040e-01,
- 6.84072930679499369155e-01,  6.84196106143102777963e-01,
- 6.84319266436379969321e-01,  6.84442411563067176772e-01,
- 6.84565541526899412617e-01,  6.84688656331610134842e-01,
- 6.84811755980931580190e-01,  6.84934840478594542112e-01,
- 6.85057909828328370772e-01,  6.85180964033861084062e-01,
- 6.85304003098919367609e-01,  6.85427027027228574774e-01,
- 6.85550035822512615624e-01,  6.85673029488493845918e-01,
- 6.85796008028893511188e-01,  6.85918971447431524702e-01,
- 6.86041919747826134390e-01,  6.86164852933794477963e-01,
- 6.86287771009052138815e-01,  6.86410673977313590122e-01,
- 6.86533561842291528698e-01,  6.86656434607697763184e-01,
- 6.86779292277242214837e-01,  6.86902134854634027761e-01,
- 6.87024962343580458679e-01,  6.87147774747787654093e-01,
- 6.87270572070960317212e-01,  6.87393354316801818982e-01,
- 6.87516121489014198076e-01,  6.87638873591298049881e-01,
- 6.87761610627352748537e-01,  6.87884332600876113872e-01,
- 6.88007039515564633447e-01,  6.88129731375113684599e-01,
- 6.88252408183216979332e-01,  6.88375069943567119424e-01,
- 6.88497716659855041321e-01,  6.88620348335770571246e-01,
- 6.88742964975002092132e-01,  6.88865566581236654642e-01,
- 6.88988153158160088196e-01,  6.89110724709456445858e-01,
- 6.89233281238809003533e-01,  6.89355822749899149748e-01,
- 6.89478349246407273831e-01,  6.89600860732012321819e-01,
- 6.89723357210391685435e-01,  6.89845838685221757203e-01,
- 6.89968305160177375335e-01,  6.90090756638931934752e-01,
- 6.90213193125157720154e-01,  6.90335614622525572948e-01,
- 6.90458021134704891253e-01,  6.90580412665363740921e-01,
- 6.90702789218168966556e-01,  6.90825150796785969476e-01,
- 6.90947497404878929750e-01,  6.91069829046110473136e-01,
- 6.91192145724142004148e-01,  6.91314447442633595031e-01,
- 6.91436734205243874740e-01,  6.91559006015630362008e-01,
- 6.91681262877449021254e-01,  6.91803504794354484631e-01,
- 6.91925731770000163046e-01,  6.92047943808038024116e-01,
- 6.92170140912118703191e-01,  6.92292323085891614376e-01,
- 6.92414490333004617462e-01,  6.92536642657104462018e-01,
- 6.92658780061836454323e-01,  6.92780902550844568388e-01,
- 6.92903010127771445958e-01,  6.93025102796258285487e-01,
- 6.93147180559945286227e-01
-};
-
-static const double fm_log_q2[] = {
--9.99999970204339394542e-01, -9.99511867731007974669e-01,
--9.99024122545299819720e-01, -9.98536734292937211421e-01,
--9.98049702617656908643e-01, -9.97563027181486594586e-01,
--9.97076707618930857535e-01, -9.96590743612639662352e-01,
--9.96105134789343704682e-01, -9.95619880820340474870e-01,
--9.95134981341887603357e-01, -9.94650436042181285146e-01,
--9.94166244524016029516e-01, -9.93682406505230209071e-01,
--9.93198921590821237615e-01, -9.92715789460176134540e-01,
--9.92233009782583330605e-01, -9.91750582106026845608e-01,
--9.91268506386495218408e-01, -9.90786781855067077984e-01,
--9.90305408488223459784e-01, -9.89824385926602934305e-01,
--9.89343713535692392824e-01, -9.88863391418940196331e-01,
--9.88383418923948875445e-01, -9.87903795762894443300e-01,
--9.87424521643993191589e-01, -9.86945596275973890954e-01,
--9.86467019194852801078e-01, -9.85988790103114798313e-01,
--9.85510908733950863336e-01, -9.85033374705881481503e-01,
--9.84556187716159159073e-01, -9.84079347261778369926e-01,
--9.83602853387407938257e-01, -9.83126705195018768535e-01,
--9.82650902914219859241e-01, -9.82175445826114934533e-01,
--9.81700333782709821939e-01, -9.81225566348648436943e-01,
--9.80751143317876161731e-01, -9.80277064203733838887e-01,
--9.79803328714193400018e-01, -9.79329936757795227464e-01,
--9.78856887595422442416e-01, -9.78384181131788044361e-01,
--9.77911817090174495526e-01, -9.77439794926507898865e-01,
--9.76968114649079621969e-01, -9.76496775371813452438e-01,
--9.76025777487512291586e-01, -9.75555119961791561423e-01,
--9.75084803046927794945e-01, -9.74614826069708173328e-01,
--9.74145188676739381961e-01, -9.73675890859331483185e-01,
--9.73206931957900756025e-01, -9.72738311825502188768e-01,
--9.72270029963272386375e-01, -9.71802086418131150225e-01,
--9.71334480453526993848e-01, -9.70867211825531484237e-01,
--9.70400280500180012488e-01, -9.69933685809522216914e-01,
--9.69467427665356984434e-01, -9.69001505342206970184e-01,
--9.68535919385462573672e-01, -9.68070668339039097638e-01,
--9.67605752941687047297e-01, -9.67141171694490986432e-01,
--9.66676925663408237455e-01, -9.66213013480509586017e-01,
--9.65749435360603869505e-01, -9.65286190415398870357e-01,
--9.64823279189289229052e-01, -9.64360700392987491014e-01,
--9.63898454448297248298e-01, -9.63436540957292031351e-01,
--9.62974958994398444467e-01, -9.62513709167376330100e-01,
--9.62052789970760380278e-01, -9.61592202627699954576e-01,
--9.61131945148046229477e-01, -9.60672018681310024846e-01,
--9.60212422016580413597e-01, -9.59753154657040807862e-01,
--9.59294217705390250828e-01, -9.58835608644634573849e-01,
--9.58377329455130544389e-01, -9.57919378224905693209e-01,
--9.57461755033558459260e-01, -9.57004460077683027919e-01,
--9.56547492491304551798e-01, -9.56090852049268358215e-01,
--9.55634538422690971160e-01, -9.55178551755278659741e-01,
--9.54722891102598336666e-01, -9.54267556606214206738e-01,
--9.53812547247320785537e-01, -9.53357864165607526985e-01,
--9.52903505218105184582e-01, -9.52449471550573356637e-01,
--9.51995762119929311851e-01, -9.51542377158775654067e-01,
--9.51089315382799949106e-01, -9.50636577505697299983e-01,
--9.50184162655493436134e-01, -9.49732070812421613759e-01,
--9.49280301530538883625e-01, -9.48828854517908548694e-01,
--9.48377729292745219603e-01, -9.47926925978650358751e-01,
--9.47476443864510908810e-01, -9.47026282877210912048e-01,
--9.46576442623344060934e-01, -9.46126922654174640215e-01,
--9.45677723062576136570e-01, -9.45228843227299053709e-01,
--9.44780282746499722180e-01, -9.44332041753326523192e-01,
--9.43884119418537004265e-01, -9.43436516131986646627e-01,
--9.42989230465001604387e-01, -9.42542263551472636607e-01,
--9.42095613681492860536e-01, -9.41649281671355309342e-01,
--9.41203266664289106558e-01, -9.40757568477113448324e-01,
--9.40312186603849187172e-01, -9.39867121156116924752e-01,
--9.39422371494921693014e-01, -9.38977937969146747577e-01,
--9.38533818425270727204e-01, -9.38090015540559929441e-01,
--9.37646526347406972235e-01, -9.37203351657070138359e-01,
--9.36760491192124566950e-01, -9.36317945251011529706e-01,
--9.35875711520406383670e-01, -9.35433791970248562642e-01,
--9.34992185225055116859e-01, -9.34550890625867491934e-01,
--9.34109909390034354182e-01, -9.33669238704104120785e-01,
--9.33228881619615147081e-01, -9.32788834331801042232e-01,
--9.32349099229301314651e-01, -9.31909674753276684456e-01,
--9.31470560559493843122e-01, -9.31031756789755693404e-01,
--9.30593263221085265080e-01, -9.30155079206603119246e-01,
--9.29717204762836368914e-01, -9.29279639073573582309e-01,
--9.28842382593162874116e-01, -9.28405434320425215766e-01,
--9.27968795011759772784e-01, -9.27532462642750910042e-01,
--9.27096438966723779274e-01, -9.26660721788762020701e-01,
--9.26225312547271695252e-01, -9.25790209080529336028e-01,
--9.25355413009083083153e-01, -9.24920922806437006969e-01,
--9.24486738767070992395e-01, -9.24052859842579898952e-01,
--9.23619287138135014459e-01, -9.23186018678442410490e-01,
--9.22753055671568844787e-01, -9.22320396657525742867e-01,
--9.21888042077250058348e-01, -9.21455991626982218179e-01,
--9.21024244683838921866e-01, -9.20592801249144221387e-01,
--9.20161660543504122955e-01, -9.19730822889199606252e-01,
--9.19300287776504854165e-01, -9.18870054128069879695e-01,
--9.18440123969056387843e-01, -9.18010494467117244000e-01,
--9.17581166544576887212e-01, -9.17152139344484806927e-01,
--9.16723413975333523140e-01, -9.16294988257087883454e-01,
--9.15866862816476667852e-01, -9.15439037326621463109e-01,
--9.15011512468304366585e-01, -9.14584285845278177618e-01,
--9.14157359376828626552e-01, -9.13730730576027161405e-01,
--9.13304401883368921489e-01, -9.12878370214750711753e-01,
--9.12452637084189110972e-01, -9.12027202313689278057e-01,
--9.11602063704228360308e-01, -9.11177223244973188976e-01,
--9.10752679369231765705e-01, -9.10328432163654999165e-01,
--9.09904481451345503729e-01, -9.09480826456257163137e-01,
--9.09057467665507212828e-01, -9.08634403906669829709e-01,
--9.08211636588364790157e-01, -9.07789162645522784700e-01,
--9.07366984547896548996e-01, -9.06945101069483228251e-01,
--9.06523510453585923408e-01, -9.06102215365062191310e-01,
--9.05681212489113374176e-01, -9.05260504038174707020e-01,
--9.04840087271269188918e-01, -9.04419965351935140063e-01,
--9.04000133954933060565e-01, -9.03580596041809180896e-01,
--9.03161349679556746395e-01, -9.02742395447701850841e-01,
--9.02323731564164344121e-01, -9.01905360386788146343e-01,
--9.01487278457227647621e-01, -9.01069488869118639940e-01,
--9.00651988294198790896e-01, -9.00234778569980020890e-01,
--8.99817858468642706171e-01, -8.99401228269987029762e-01,
--8.98984886685647799354e-01, -8.98568834398333571301e-01,
--8.98153071362558952373e-01, -8.97737595680574984591e-01,
--8.97322409400924114742e-01, -8.96907510418140430097e-01,
--8.96492899517607799709e-01, -8.96078575663256993167e-01,
--8.95664539420013672277e-01, -8.95250789564243198981e-01,
--8.94837326234608987363e-01, -8.94424150100090686877e-01,
--8.94011259743090591634e-01, -8.93598654577083761907e-01,
--8.93186335571800604782e-01, -8.92774302228811822424e-01,
--8.92362552778136142173e-01, -8.91951089210193392987e-01,
--8.91539909524236673377e-01, -8.91129014144898534688e-01,
--8.90718403374395006900e-01, -8.90308075579229751817e-01,
--8.89898031403237421699e-01, -8.89488271301558164339e-01,
--8.89078792809798290619e-01, -8.88669598345472655510e-01,
--8.88260684893865892775e-01, -8.87852055111406412991e-01,
--8.87443705578046637683e-01, -8.87035638935646852943e-01,
--8.86627853624748274441e-01, -8.86220349050373723543e-01,
--8.85813124960938669261e-01, -8.85406182957758969287e-01,
--8.84999519681124224846e-01, -8.84593137189672695797e-01,
--8.84187034799512772132e-01, -8.83781211790588994148e-01,
--8.83375667536064224095e-01, -8.82970403866355613154e-01,
--8.82565416880603970107e-01, -8.82160710572937767360e-01,
--8.81756281249608142581e-01, -8.81352129912593151850e-01,
--8.80948257644714738390e-01, -8.80544661906674352991e-01,
--8.80141343390940522617e-01, -8.79738301866938576801e-01,
--8.79335537564497671248e-01, -8.78933049794877185867e-01,
--8.78530838289241611250e-01, -8.78128902017706214345e-01,
--8.77727242574676602693e-01, -8.77325857406385578585e-01,
--8.76924749545558213093e-01, -8.76523915002998088575e-01,
--8.76123355526894909140e-01, -8.75723070907653888817e-01,
--8.75323060235463579204e-01, -8.74923324565198612390e-01,
--8.74523860587170576153e-01, -8.74124672103355093711e-01,
--8.73725755597443032308e-01, -8.73327112950790240831e-01,
--8.72928742948249847267e-01, -8.72530645775088542493e-01,
--8.72132819111415824587e-01, -8.71735266463592339825e-01,
--8.71337984507970064740e-01, -8.70940974650877608454e-01,
--8.70544234590646004435e-01, -8.70147769333657672419e-01,
--8.69751569537952962108e-01, -8.69355645213247596459e-01,
--8.68959988014379680621e-01, -8.68564601754506560027e-01,
--8.68169485114097416734e-01, -8.67774639558116844817e-01,
--8.67380060546237952046e-01, -8.66985753598933484021e-01,
--8.66591712350508802665e-01, -8.66197942773432094654e-01,
--8.65804438519395369589e-01, -8.65411205039324338273e-01,
--8.65018238053694155099e-01, -8.64625538053809039596e-01,
--8.64233107353976737208e-01, -8.63840941793596828191e-01,
--8.63449044524892350694e-01, -8.63057412687507463644e-01,
--8.62666048982706823445e-01, -8.62274948259755036339e-01,
--8.61884117244458014540e-01, -8.61493548154168120590e-01,
--8.61103248629860429375e-01, -8.60713209860124339734e-01,
--8.60323439891849783834e-01, -8.59933932112696530758e-01,
--8.59544690955295176416e-01, -8.59155710889400126007e-01,
--8.58766998427491934365e-01, -8.58378547019733151302e-01,
--8.57990359589185458411e-01, -8.57602436581375471292e-01,
--8.57214776085103435932e-01, -8.56827376917738359197e-01,
--8.56440242927035244591e-01, -8.56053368286509908103e-01,
--8.55666758484504463844e-01, -8.55280408570004979651e-01,
--8.54894321682854507749e-01, -8.54508495802631440341e-01,
--8.54122930283242931537e-01, -8.53737626935513915782e-01,
--8.53352581956205002989e-01, -8.52967800365546313657e-01,
--8.52583277061727651258e-01, -8.52199013461921284218e-01,
--8.51815011793214615921e-01, -8.51431267318022655388e-01,
--8.51047782789758122668e-01, -8.50664557520292130555e-01,
--8.50281591508726952711e-01, -8.49898882652814657845e-01,
--8.49516433774509360788e-01, -8.49134241276175760760e-01,
--8.48752308344500772108e-01, -8.48370631418307152849e-01,
--8.47989213173712008675e-01, -8.47608052055359939558e-01,
--8.47227146020622434719e-01, -8.46846499207430714051e-01,
--8.46466108282560192322e-01, -8.46085971265107983363e-01,
--8.45706093823972659962e-01, -8.45326469234303878864e-01,
--8.44947101962797320063e-01, -8.44567989249422446107e-01,
--8.44189132079671167297e-01, -8.43810529271607157042e-01,
--8.43432181773515310397e-01, -8.43054086974192373738e-01,
--8.42676248782231018808e-01, -8.42298662556367427889e-01,
--8.41921331777192527568e-01, -8.41544252751542209978e-01,
--8.41167428389579807657e-01, -8.40790856331749880681e-01,
--8.40414537518176185671e-01, -8.40038470547919358111e-01,
--8.39662657290645486619e-01, -8.39287094462596861000e-01,
--8.38911784947234617782e-01, -8.38536726082408478966e-01,
--8.38161920045321418016e-01, -8.37787363583282096435e-01,
--8.37413059147947502758e-01, -8.37039005773316913128e-01,
--8.36665202077768510591e-01, -8.36291648965855838327e-01,
--8.35918346994952599083e-01, -8.35545293031011770957e-01,
--8.35172490670944567270e-01, -8.34799937043055217956e-01,
--8.34427631655312529446e-01, -8.34055576553571542675e-01,
--8.33683769634376070634e-01, -8.33312211677761704998e-01,
--8.32940901667041044831e-01, -8.32569840094962154708e-01,
--8.32199026007219733181e-01, -8.31828459934317754332e-01,
--8.31458140708547288611e-01, -8.31088069676270801978e-01,
--8.30718245413716971370e-01, -8.30348666681671510048e-01,
--8.29979337066795830324e-01, -8.29610251843562407359e-01,
--8.29241412357579754655e-01, -8.28872820745909844042e-01,
--8.28504472702632721592e-01, -8.28136372138494003536e-01,
--8.27768516098335127573e-01, -8.27400904110141666159e-01,
--8.27033538223160613612e-01, -8.26666416300355200164e-01,
--8.26299539252689507762e-01, -8.25932905573345754746e-01,
--8.25566517584661041518e-01, -8.25200370298072694020e-01,
--8.24834470169624522917e-01, -8.24468810333541246571e-01,
--8.24103395033075170062e-01, -8.23738222542895748290e-01,
--8.23373292727103800459e-01, -8.23008605060659648167e-01,
--8.22644158985652573790e-01, -8.22279957258766014405e-01,
--8.21915994999112275998e-01, -8.21552275003720078317e-01,
--8.21188796553297462033e-01, -8.20825559727983877778e-01,
--8.20462562132544981353e-01, -8.20099807679844250430e-01,
--8.19737291495564845967e-01, -8.19375017988239751077e-01,
--8.19012982779956599799e-01, -8.18651187797961865655e-01,
--8.18289632505148967212e-01, -8.17928317122697978725e-01,
--8.17567241302996294827e-01, -8.17206403421344873550e-01,
--8.16845804736217262487e-01, -8.16485444632387147301e-01,
--8.16125324312285349571e-01, -8.15765439581415341408e-01,
--8.15405794839461406376e-01, -8.15046387858052834297e-01,
--8.14687217563053955871e-01, -8.14328284891442821802e-01,
--8.13969589963410289357e-01, -8.13611131361214212632e-01,
--8.13252909047697203349e-01, -8.12894924589232403811e-01,
--8.12537174551450025461e-01, -8.12179662723554018910e-01,
--8.11822385765001985902e-01, -8.11465344866855842199e-01,
--8.11108538605410545053e-01, -8.10751968690456070732e-01,
--8.10395632500506502005e-01, -8.10039533223778640547e-01,
--8.09683666316827421738e-01, -8.09328035589345851086e-01,
--8.08972638727908588407e-01, -8.08617475588590539637e-01,
--8.08262546266548476126e-01, -8.07907850525080184489e-01,
--8.07553389215838191006e-01, -8.07199159168914714968e-01,
--8.06845163830385736503e-01, -8.06491400967756844054e-01,
--8.06137870476995033187e-01, -8.05784572212759564458e-01,
--8.05431506860445400875e-01, -8.05078671823814207009e-01,
--8.04726071214487803651e-01, -8.04373699564121635852e-01,
--8.04021560664633705429e-01, -8.03669653198598288313e-01,
--8.03317975849833776358e-01, -8.02966529612556545459e-01,
--8.02615314620049424832e-01, -8.02264329344965387847e-01,
--8.01913574175475818429e-01, -8.01563049086241208308e-01,
--8.01212753790446652324e-01, -8.00862689460692500631e-01,
--8.00512851693393034935e-01, -8.00163245754418328559e-01,
--7.99813866159745590068e-01, -7.99464718403725238538e-01,
--7.99115797168848507326e-01, -7.98767104260962645945e-01,
--7.98418640568153703541e-01, -7.98070403526198957067e-01,
--7.97722396915967246755e-01, -7.97374613766141382420e-01,
--7.97027061417315940695e-01, -7.96679734242235038089e-01,
--7.96332636233457291652e-01, -7.95985762635938898235e-01,
--7.95639117301425558004e-01, -7.95292697959882555203e-01,
--7.94946504251766716820e-01, -7.94600537091318392946e-01,
--7.94254795975086080873e-01, -7.93909279208667828520e-01,
--7.93563988485189275579e-01, -7.93218924314483708748e-01,
--7.92874082964091897452e-01, -7.92529467678147581111e-01,
--7.92185077594477093932e-01, -7.91840910123675190135e-01,
--7.91496968103633014024e-01, -7.91153251154092851394e-01,
--7.90809755164228800339e-01, -7.90466485781729399918e-01,
--7.90123438496507235485e-01, -7.89780614525349644595e-01,
--7.89438013511196468031e-01, -7.89095635665502115330e-01,
--7.88753480499506887114e-01, -7.88411546962827891605e-01,
--7.88069836951789781665e-01, -7.87728349519411286117e-01,
--7.87387080969357722182e-01, -7.87046038652046253681e-01,
--7.86705213625948918121e-01, -7.86364611955018277811e-01,
--7.86024232294810998312e-01, -7.85684071165180464291e-01,
--7.85344132655284687949e-01, -7.85004415064510130406e-01,
--7.84664915518216821155e-01, -7.84325638833675120587e-01,
--7.83986579792315119164e-01, -7.83647743275274089036e-01,
--7.83309123358476799837e-01, -7.82970724887247948587e-01,
--7.82632545580235650107e-01, -7.82294584129585413024e-01,
--7.81956842460133971784e-01, -7.81619319768323217446e-01,
--7.81282014549579795215e-01, -7.80944928037821894939e-01,
--7.80608059595917502804e-01, -7.80271410538476040131e-01,
--7.79934976244191724426e-01, -7.79598762707806702821e-01,
--7.79262764541498231807e-01, -7.78926983331975741898e-01,
--7.78591420914192311464e-01, -7.78256073949561311132e-01,
--7.77920942781604729532e-01, -7.77586029374822684801e-01,
--7.77251331115626831192e-01, -7.76916850905936318128e-01,
--7.76582585339597120111e-01, -7.76248533963435183303e-01,
--7.75914701996302635933e-01, -7.75581080191833582838e-01,
--7.75247677964898906922e-01, -7.74914489254122762496e-01,
--7.74581512126330751222e-01, -7.74248754787661197518e-01,
--7.73916208698477214867e-01, -7.73583877459445679037e-01,
--7.73251760795472087295e-01, -7.72919856206266908671e-01,
--7.72588168380147766179e-01, -7.72256692240005038208e-01,
--7.71925426642152245904e-01, -7.71594381238445370386e-01,
--7.71263540916888867827e-01, -7.70932917358060021407e-01,
--7.70602506891323590921e-01, -7.70272306930707917338e-01,
--7.69942320314862649333e-01, -7.69612543863097631203e-01,
--7.69282981871587834277e-01, -7.68953631512193758191e-01,
--7.68624488625428980981e-01, -7.68295561501506463209e-01,
--7.67966843490803574568e-01, -7.67638336137790866509e-01,
--7.67310039914208652512e-01, -7.66981956976561352057e-01,
--7.66654078227090418629e-01, -7.66326415548583939064e-01,
--7.65998958447325462018e-01, -7.65671714663651137300e-01,
--7.65344680493737494764e-01, -7.65017851836673590249e-01,
--7.64691237624055331068e-01, -7.64364828582150601655e-01,
--7.64038630522551276414e-01, -7.63712640648493090723e-01,
--7.63386858747504670752e-01, -7.63061288466236553596e-01,
--7.62735921018492635248e-01, -7.62410765550665892043e-01,
--7.62085816615121647288e-01, -7.61761075680135402166e-01,
--7.61436542320239606596e-01, -7.61112216769028959718e-01,
--7.60788098517591659942e-01, -7.60464183780045210881e-01,
--7.60140482620896840160e-01, -7.59816980919740148082e-01,
--7.59493691566082151923e-01, -7.59170605061977532557e-01,
--7.58847724157959091507e-01, -7.58525052937777277684e-01,
--7.58202583491767168056e-01, -7.57880321023096881206e-01,
--7.57558263804628873039e-01, -7.57236413541746422595e-01,
--7.56914765140053291681e-01, -7.56593326095880147619e-01,
--7.56272088282107901591e-01, -7.55951054359139007488e-01,
--7.55630227400418519323e-01, -7.55309603627635328671e-01,
--7.54989183904718030860e-01, -7.54668968554262464821e-01,
--7.54348955421957012568e-01, -7.54029147214517081466e-01,
--7.53709540847328773872e-01, -7.53390140364195159961e-01,
--7.53070938262454747658e-01, -7.52751943745142870767e-01,
--7.52433149854522587141e-01, -7.52114558454699100309e-01,
--7.51796169046989537499e-01, -7.51477981762019409118e-01,
--7.51159996575969213239e-01, -7.50842213453493112496e-01,
--7.50524632559792070907e-01, -7.50207253269409068963e-01,
--7.49890072331035217879e-01, -7.49573097787428865857e-01,
--7.49256317482670186614e-01, -7.48939744058004119864e-01,
--7.48623367044046972296e-01, -7.48307193325348007917e-01,
--7.47991217008963427126e-01, -7.47675443606249379158e-01,
--7.47359868140595740016e-01, -7.47044493831215072888e-01,
--7.46729318365803806934e-01, -7.46414342186427659520e-01,
--7.46099565837127109980e-01, -7.45784986699675633837e-01,
--7.45470609115002180722e-01, -7.45156429513488927086e-01,
--7.44842446656806989047e-01, -7.44528663479954389004e-01,
--7.44215080657139260722e-01, -7.43901692556530491629e-01,
--7.43588504267438610285e-01, -7.43275512240322511204e-01,
--7.42962719996102194386e-01, -7.42650122588572991766e-01,
--7.42337725105762458178e-01, -7.42025523317636936937e-01,
--7.41713517880432493534e-01, -7.41401710399238300653e-01,
--7.41090099385395939535e-01, -7.40778683600515686081e-01,
--7.40467463898880073891e-01, -7.40156443689682697062e-01,
--7.39845614069802537394e-01, -7.39534984890788393841e-01,
--7.39224548001308101597e-01, -7.38914309391334400701e-01,
--7.38604264428180834479e-01, -7.38294414476748039888e-01,
--7.37984758710120813952e-01, -7.37675299071058887534e-01,
--7.37366034203374987044e-01, -7.37056962001121251937e-01,
--7.36748086656342393574e-01, -7.36439404682677878355e-01,
--7.36130914657654233935e-01, -7.35822620169590324579e-01,
--7.35514519463555171974e-01, -7.35206610383018932531e-01,
--7.34898897721095401003e-01, -7.34591375637730692461e-01,
--7.34284045936220541861e-01, -7.33976912831370453816e-01,
--7.33669968836534902579e-01, -7.33363217331747141436e-01,
--7.33056663459391577575e-01, -7.32750294445768779461e-01,
--7.32444122715677270463e-01, -7.32138139283301514482e-01,
--7.31832350903298456402e-01, -7.31526750718727192258e-01,
--7.31221342638886384613e-01, -7.30916129059394292788e-01,
--7.30611102076414442585e-01, -7.30306268557933346841e-01,
--7.30001625699647327394e-01, -7.29697172262848026136e-01,
--7.29392910418738549261e-01, -7.29088838309150055750e-01,
--7.28784955607618689655e-01, -7.28481265478169826011e-01,
--7.28177761179099825029e-01, -7.27874449749392971043e-01,
--7.27571326538621221403e-01, -7.27268391933642233127e-01,
--7.26965649037452310566e-01, -7.26663090639144915173e-01,
--7.26360725715543331660e-01, -7.26058547922002528452e-01,
--7.25756556896473670193e-01, -7.25454754843860794011e-01,
--7.25153144482468259291e-01, -7.24851718322109705994e-01,
--7.24550481253484202071e-01, -7.24249432379852731145e-01,
--7.23948570397473178950e-01, -7.23647895830116794080e-01,
--7.23347407886440363356e-01, -7.23047109208045823969e-01,
--7.22746995607804532114e-01, -7.22447070016758230437e-01,
--7.22147330485803817801e-01, -7.21847776292375953311e-01,
--7.21548412275839101682e-01, -7.21249230977172972601e-01,
--7.20950235041350917520e-01, -7.20651426935435934773e-01,
--7.20352805322073797001e-01, -7.20054367495683189659e-01,
--7.19756114440071592675e-01, -7.19458050513526736758e-01,
--7.19160168474960670437e-01, -7.18862470578696011181e-01,
--7.18564960636466132371e-01, -7.18267632322884708174e-01,
--7.17970490363957880575e-01, -7.17673533356917969783e-01,
--7.17376756598895437556e-01, -7.17080169128263444911e-01,
--7.16783761846141453944e-01, -7.16487539757937441642e-01,
--7.16191503116768934945e-01, -7.15895645904759847511e-01,
--7.15599975176490210593e-01, -7.15304485495321218380e-01,
--7.15009180377358166680e-01, -7.14714056782754569852e-01,
--7.14419117766853850604e-01, -7.14124359736066027793e-01,
--7.13829782833535930742e-01, -7.13535390080274445346e-01,
--7.13241180424964205109e-01, -7.12947149463927454249e-01,
--7.12653304687322797228e-01, -7.12359637301999693015e-01,
--7.12066152638659022323e-01, -7.11772849343519586895e-01,
--7.11479727501005188017e-01, -7.11186788127201818810e-01,
--7.10894027073341483458e-01, -7.10601448742539276715e-01,
--7.10309050846974154858e-01, -7.10016832546879306243e-01,
--7.09724793901207129387e-01, -7.09432935513915619019e-01,
--7.09141260498156178471e-01, -7.08849761385299537153e-01,
--7.08558442584971137634e-01, -7.08267305103167377212e-01,
--7.07976346094213448978e-01, -7.07685564758942065033e-01,
--7.07394967139696184688e-01, -7.07104541042143486251e-01,
--7.06814301261591060310e-01, -7.06524234338757661789e-01,
--7.06234351375782054561e-01, -7.05944643775133773289e-01,
--7.05655112473053125477e-01, -7.05365762322110345650e-01,
--7.05076589739588643901e-01, -7.04787593027915937327e-01,
--7.04498776972161788734e-01, -7.04210135305489814961e-01,
--7.03921671546370086858e-01, -7.03633389063629932636e-01,
--7.03345276451424861186e-01, -7.03057348024629158445e-01,
--7.02769591457201636686e-01, -7.02482013798756299572e-01,
--7.02194610352749770676e-01, -7.01907387267804994124e-01,
--7.01620335821844576252e-01, -7.01333462402813800907e-01,
--7.01046766944815602507e-01, -7.00760243323492182377e-01,
--7.00473899338366345901e-01, -7.00187726679509570005e-01,
--6.99901734023308352839e-01, -6.99615911737950901816e-01,
--6.99330267322555876319e-01, -6.99044797176266552441e-01,
--6.98759502615456606911e-01, -6.98474381975487834673e-01,
--6.98189435010603598464e-01, -6.97904664368468763413e-01,
--6.97620065292115398847e-01, -6.97335642985881021261e-01,
--6.97051392565252503353e-01, -6.96767317188075163692e-01,
--6.96483414695416080953e-01, -6.96199684977226063154e-01,
--6.95916130632634022390e-01, -6.95632746963111059380e-01,
--6.95349538987770743326e-01, -6.95066502504559258213e-01,
--6.94783638126708624760e-01, -6.94500947603343021797e-01,
--6.94218428912669494046e-01, -6.93936082804800791202e-01,
--6.93653908301078647725e-01, -6.93371908566022487896e-01,
--6.93090077508149882135e-01, -6.92808419565063893231e-01,
--6.92526934253705372946e-01, -6.92245619068708628596e-01,
--6.91964473338724017637e-01, -6.91683502254516024976e-01,
--6.91402702488182807627e-01, -6.91122070984696024176e-01,
--6.90841612116200654015e-01, -6.90561322625015239218e-01,
--6.90281205581785073377e-01, -6.90001257549546886949e-01,
--6.89721478029636569929e-01, -6.89441872453674942101e-01,
--6.89162436357648067187e-01, -6.88883165402184860504e-01,
--6.88604070232913700877e-01, -6.88325140546367397754e-01,
--6.88046384559045987039e-01, -6.87767790884287189002e-01,
--6.87489374500497851805e-01, -6.87211120408326436859e-01,
--6.86933040099159009095e-01, -6.86655124958544749170e-01,
--6.86377381189093749292e-01, -6.86099803770688687621e-01,
--6.85822395405317086770e-01, -6.85545155893080848664e-01,
--6.85268083331586397300e-01, -6.84991179942370131961e-01,
--6.84714444329615257168e-01, -6.84437874267117551952e-01,
--6.84161474467574581837e-01, -6.83885239482271423128e-01,
--6.83609175217499309696e-01, -6.83333274672679680251e-01,
--6.83057543180028203800e-01, -6.82781977587132438146e-01,
--6.82506579583491368446e-01, -6.82231345563520275022e-01,
--6.81956282672124491917e-01, -6.81681382699073523668e-01,
--6.81406648988642449360e-01, -6.81132081961896229672e-01,
--6.80857682178235834591e-01, -6.80583446978993089616e-01,
--6.80309375263567606140e-01, -6.80035474093030112286e-01,
--6.79761733087503428052e-01, -6.79488158765748972989e-01,
--6.79214752196404480955e-01, -6.78941508174092933636e-01,
--6.78668429687879326551e-01, -6.78395515574814367277e-01,
--6.78122767497631007139e-01, -6.77850179968347288373e-01,
--6.77577762100286307145e-01, -6.77305505279880759595e-01,
--6.77033412496333641961e-01, -6.76761485994335831862e-01,
--6.76489719393857269480e-01, -6.76218119206519308051e-01,
--6.75946682529674824913e-01, -6.75675408874354177513e-01,
--6.75404297511148055122e-01, -6.75133351846663343210e-01,
--6.74862564571817591386e-01, -6.74591944752526595508e-01,
--6.74321485785951746372e-01, -6.74051188253726119015e-01,
--6.73781056432154912272e-01, -6.73511083810255595239e-01,
--6.73241275391847304732e-01, -6.72971628848506364662e-01,
--6.72702142902172117722e-01, -6.72432819405576420735e-01,
--6.72163657813787729367e-01, -6.71894658453800697195e-01,
--6.71625820562567810157e-01, -6.71357141277348468122e-01,
--6.71088627224218470246e-01, -6.70820271525421008008e-01,
--6.70552078302100618146e-01, -6.70284043535372409117e-01,
--6.70016173591694408351e-01, -6.69748458199992402484e-01,
--6.69480909726361872458e-01, -6.69213516917172568377e-01,
--6.68946284481173658598e-01, -6.68679216012868060659e-01,
--6.68412303601367385752e-01, -6.68145552943979481597e-01,
--6.67878960338233018668e-01, -6.67612529308768909431e-01,
--6.67346255047431613505e-01, -6.67080142086330152296e-01,
--6.66814188281055542085e-01, -6.66548392089199914778e-01,
--6.66282756236867390598e-01, -6.66017276949984693424e-01,
--6.65751961010806025953e-01, -6.65486796240258193791e-01,
--6.65221796632702977448e-01, -6.64956951917378802364e-01,
--6.64692266831228506518e-01, -6.64427738285177982291e-01,
--6.64163368310645152448e-01, -6.63899157458967215106e-01,
--6.63635101493379009341e-01, -6.63371205633731642060e-01,
--6.63107464413257408076e-01, -6.62843883303304792776e-01,
--6.62580457061119010298e-01, -6.62317190010498935138e-01,
--6.62054075686940191048e-01, -6.61791124448790291090e-01,
--6.61528323678905905147e-01, -6.61265685547834380920e-01,
--6.61003196342271448493e-01, -6.60740870805210378514e-01,
--6.60478697205595710606e-01, -6.60216679784977111822e-01,
--6.59954818896147266116e-01, -6.59693114474321662399e-01,
--6.59431566425846660273e-01, -6.59170169602183664281e-01,
--6.58908933515271577619e-01, -6.58647847617634174533e-01,
--6.58386922235495664069e-01, -6.58126148963177781681e-01,
--6.57865528745428029822e-01, -6.57605066208932775851e-01,
--6.57344758666007500381e-01, -6.57084601064832130035e-01,
--6.56824605124500249254e-01, -6.56564756960135609276e-01,
--6.56305066864535935345e-01, -6.56045529903129254201e-01,
--6.55786144345534061095e-01, -6.55526916459913788771e-01,
--6.55267839667802221015e-01, -6.55008917251094002765e-01,
--6.54750148248612329205e-01, -6.54491533223170662836e-01,
--6.54233070884690626201e-01, -6.53974760242737929161e-01,
--6.53716606549127665637e-01, -6.53458600962904423426e-01,
--6.53200751244333299717e-01, -6.52943051957115550010e-01,
--6.52685505910310381772e-01, -6.52428112891914491200e-01,
--6.52170870940882663191e-01, -6.51913782525463059159e-01,
--6.51656845321644140334e-01, -6.51400060569288341661e-01,
--6.51143425632956684979e-01, -6.50886944226608088471e-01,
--6.50630615305716641927e-01, -6.50374433746492064401e-01,
--6.50118409912749273261e-01, -6.49862529824762003017e-01,
--6.49606805510006379833e-01, -6.49351230777982735276e-01,
--6.49095807187341833355e-01, -6.48840534693980175440e-01,
--6.48585411915660881021e-01, -6.48330438837500522276e-01,
--6.48075616901269135894e-01, -6.47820945942705561649e-01,
--6.47566425177083959674e-01, -6.47312052319633957076e-01,
--6.47057831706227326585e-01, -6.46803759454018356578e-01,
--6.46549835582646559295e-01, -6.46296063896400263538e-01,
--6.46042440334356982135e-01, -6.45788966160048438780e-01,
--6.45535640380269004623e-01, -6.45282465704309915466e-01,
--6.45029437876147415665e-01, -6.44776560034714729674e-01,
--6.44523829468238051987e-01, -6.44271248296943266354e-01,
--6.44018816339636313018e-01, -6.43766532200867991342e-01,
--6.43514396055693715937e-01, -6.43262408599340806958e-01,
--6.43010566875844125079e-01, -6.42758876425902569984e-01,
--6.42507329218555911510e-01, -6.42255935073139161418e-01,
--6.42004685095015736884e-01, -6.41753582691653279291e-01,
--6.41502628715755141009e-01, -6.41251821936975163752e-01,
--6.41001160836058181403e-01, -6.40750647132437567421e-01,
--6.40500281055568221333e-01, -6.40250059968197837712e-01,
--6.39999988601946290245e-01, -6.39750061843456507837e-01,
--6.39500278650730780150e-01, -6.39250648305116686565e-01,
--6.39001157074963743732e-01, -6.38751817077913619514e-01,
--6.38502621514727142227e-01, -6.38253568700912876643e-01,
--6.38004666585740953799e-01, -6.37755907408363187372e-01,
--6.37507291911161622089e-01, -6.37258824885454600029e-01,
--6.37010503187394161451e-01, -6.36762323425182796832e-01,
--6.36514291133987608617e-01, -6.36266404328743595542e-01,
--6.36018659826609211727e-01, -6.35771061168143747366e-01,
--6.35523608549822371927e-01, -6.35276297645185561436e-01,
--6.35029134387725902045e-01, -6.34782110545802358281e-01,
--6.34535236348681808138e-01, -6.34288501462677678511e-01,
--6.34041914641527926122e-01, -6.33795467967775083551e-01,
--6.33549167593703055346e-01, -6.33303008003505141232e-01,
--6.33056993932254119528e-01, -6.32811123131335140357e-01,
--6.32565394272199932324e-01, -6.32319809329721316260e-01,
--6.32074367320891727928e-01, -6.31829070202868159356e-01,
--6.31583911130030539738e-01, -6.31338898763895817190e-01,
--6.31094027655757727757e-01, -6.30849299763053705803e-01,
--6.30604712704740499873e-01, -6.30360268459618455772e-01,
--6.30115967081463446142e-01, -6.29871806376373299940e-01,
--6.29627789478244714871e-01, -6.29383911633328185786e-01,
--6.29140177546854029167e-01, -6.28896584327522600866e-01,
--6.28653133247365936143e-01, -6.28409822109554871972e-01,
--6.28166652841440020794e-01, -6.27923625518381989252e-01,
--6.27680737911588959577e-01, -6.27437993272931704425e-01,
--6.27195386411654398628e-01, -6.26952923663039451974e-01,
--6.26710596052582280535e-01, -6.26468416379213244305e-01,
--6.26226370361392947750e-01, -6.25984468798736148898e-01,
--6.25742705126064335808e-01, -6.25501083628606235898e-01,
--6.25259599318561232195e-01, -6.25018256686031725700e-01,
--6.24777053934279402725e-01, -6.24535988172220113412e-01,
--6.24295067172993101146e-01, -6.24054279498932329417e-01,
--6.23813635187884907296e-01, -6.23573127877870336810e-01,
--6.23332761803093160502e-01, -6.23092531976650820802e-01,
--6.22852442936077554947e-01, -6.22612492694010200012e-01,
--6.22372679074432388902e-01, -6.22133007180836417049e-01,
--6.21893469951140587249e-01, -6.21654073766373604926e-01,
--6.21414816928307800481e-01, -6.21175694260889921239e-01,
--6.20936711402754637490e-01, -6.20697867739223418937e-01,
--6.20459160090374717278e-01, -6.20220590614702582677e-01,
--6.19982159446087810473e-01, -6.19743863890513058124e-01,
--6.19505709002232674010e-01, -6.19267688434115282092e-01,
--6.19029805756627693469e-01, -6.18792058622968155213e-01,
--6.18554452849878200205e-01, -6.18316978693062901939e-01,
--6.18079646961219419943e-01, -6.17842446515595722367e-01,
--6.17605383162825982701e-01, -6.17368461578931437828e-01,
--6.17131668429063418024e-01, -6.16895018848982901183e-01,
--6.16658499158108108773e-01, -6.16422121003326939359e-01,
--6.16185873829411923097e-01, -6.15949765858643694116e-01,
--6.15713791520932085533e-01, -6.15477953698487789680e-01,
--6.15242252020492652598e-01, -6.15006685088008708817e-01,
--6.14771253279671636705e-01, -6.14535956479875133951e-01,
--6.14300794772409064493e-01, -6.14065767937721718184e-01,
--6.13830876770228073269e-01, -6.13596118311820704072e-01,
--6.13361498012579442474e-01, -6.13127008206162837922e-01,
--6.12892657344050406643e-01, -6.12658436050471988388e-01,
--6.12424351025287472261e-01, -6.12190401608632028818e-01,
--6.11956583740106974112e-01, -6.11722903145300644923e-01,
--6.11489352158128496306e-01, -6.11255938953534583291e-01,
--6.11022655261633462764e-01, -6.10789509223216509071e-01,
--6.10556493308809900000e-01, -6.10323612731711540036e-01,
--6.10090865344073973731e-01, -6.09858248936054225808e-01,
--6.09625768906936205127e-01, -6.09393417045297591805e-01,
--6.09161204033737857522e-01, -6.08929117705023448259e-01,
--6.08697168105810870742e-01, -6.08465349568450442064e-01,
--6.08233663541013047649e-01, -6.08002109898864828708e-01,
--6.07770687692471445196e-01, -6.07539400844602006657e-01,
--6.07308240201651194923e-01, -6.07077216103529160307e-01,
--6.06846324283877858186e-01, -6.06615560292348421356e-01,
--6.06384929432888464262e-01, -6.06154431703861962255e-01,
--6.05924061807866065621e-01, -6.05693829760275859186e-01,
--6.05463723148737864577e-01, -6.05233748079676781018e-01,
--6.05003903715618296388e-01, -6.04774198475906521466e-01,
--6.04544610696509998604e-01, -6.04315162734855082505e-01,
--6.04085842704623399158e-01, -6.03856653441919410952e-01,
--6.03627595488644308475e-01, -6.03398663841088644944e-01,
--6.03169866796318343560e-01, -6.02941198521520616005e-01,
--6.02712662875009685948e-01, -6.02484250256341447027e-01,
--6.02255972857237198426e-01, -6.02027825038867536733e-01,
--6.01799805988958325109e-01, -6.01571913419564285874e-01,
--6.01344157294740888631e-01, -6.01116522397953101375e-01,
--6.00889026103673673518e-01, -6.00661647658158770469e-01,
--6.00434407998426733499e-01, -6.00207288833633056946e-01,
--5.99980308862523514790e-01, -5.99753445108572424971e-01,
--5.99526726075654492476e-01, -5.99300116604148724875e-01,
--5.99073650597569562493e-01, -5.98847305832576282114e-01,
--5.98621092595534198821e-01, -5.98395003140193559865e-01,
--5.98169046989315500440e-01, -5.97943216149849243735e-01,
--5.97717510719493860805e-01, -5.97491938300504732418e-01,
--5.97266490737901722952e-01, -5.97041170697608758466e-01,
--5.96815975670910492390e-01, -5.96590913026744495973e-01,
--5.96365978149817177467e-01, -5.96141159780623763886e-01,
--5.95916485220735703265e-01, -5.95691923578596127520e-01,
--5.95467492887766125520e-01, -5.95243196609040237099e-01,
--5.95019014041551219663e-01, -5.94794968648619137852e-01,
--5.94571043157184897510e-01, -5.94347249668552901625e-01,
--5.94123579402305201924e-01, -5.93900033027068730007e-01,
--5.93676616648752819572e-01, -5.93453327526834439887e-01,
--5.93230159341627150127e-01, -5.93007117760657065375e-01,
--5.92784208785247512807e-01, -5.92561413918450186067e-01,
--5.92338756443251623907e-01, -5.92116217604009120734e-01,
--5.91893804436822379422e-01, -5.91671518728806522525e-01,
--5.91449357471272030295e-01, -5.91227319735991518890e-01,
--5.91005412244563821389e-01, -5.90783620214691107542e-01,
--5.90561962526354289338e-01, -5.90340423145411241634e-01,
--5.90119013800835201522e-01, -5.89897725962619245976e-01,
--5.89676559670074262876e-01, -5.89455523295964733954e-01,
--5.89234605661662969034e-01, -5.89013820757174455522e-01,
--5.88793146152845503494e-01, -5.88572612873802136768e-01,
--5.88352186304420876617e-01, -5.88131895650970792921e-01,
--5.87911725759226233556e-01, -5.87691674512207162806e-01,
--5.87471754356189146407e-01, -5.87251951150662199197e-01,
--5.87032275483777565839e-01, -5.86812721495183042819e-01,
--5.86593290862264971075e-01, -5.86373982735830190371e-01,
--5.86154798835264334578e-01, -5.85935733132218805608e-01,
--5.85716796844832021662e-01, -5.85497984656510039869e-01,
--5.85279284263748866834e-01, -5.85060716669546732049e-01,
--5.84842266044768188671e-01, -5.84623941175344330468e-01,
--5.84405733922557346638e-01, -5.84187656879476824301e-01,
--5.83969690164282795308e-01, -5.83751856007703295859e-01,
--5.83534141248000293167e-01, -5.83316542773784973974e-01,
--5.83099075016479395650e-01, -5.82881716889396495063e-01,
--5.82664493604380329117e-01, -5.82447381280095655143e-01,
--5.82230394350684243854e-01, -5.82013532488527274289e-01,
--5.81796782569958814690e-01, -5.81580163889648171782e-01,
--5.81363657096067520946e-01, -5.81147275597175272388e-01,
--5.80931018640279073217e-01, -5.80714875828189036611e-01,
--5.80498855974745042730e-01, -5.80282956573518804433e-01,
--5.80067178836383479101e-01, -5.79851520422275057420e-01,
--5.79635978307705301837e-01, -5.79420566927691282899e-01,
--5.79205265093265642129e-01, -5.78990087245926599024e-01,
--5.78775030336261320230e-01, -5.78560092120421365358e-01,
--5.78345273447344543349e-01, -5.78130573165126393498e-01,
--5.77915995032448615021e-01, -5.77701536342358656917e-01,
--5.77487192988114461656e-01, -5.77272972927765581908e-01,
--5.77058870787597544272e-01, -5.76844888928548904516e-01,
--5.76631023280578580703e-01, -5.76417276587042004543e-01,
--5.76203653120429537537e-01, -5.75990144223295308379e-01,
--5.75776757901189761846e-01, -5.75563481965228884718e-01,
--5.75350334813656383304e-01, -5.75137299745865471223e-01,
--5.74924380462553563653e-01, -5.74711590037412012322e-01,
--5.74498906002588793918e-01, -5.74286349276446173029e-01,
--5.74073903356870807180e-01, -5.73861579806341892684e-01,
--5.73649371228796445266e-01, -5.73437284470137975667e-01,
--5.73225310718684766265e-01, -5.73013456023520051374e-01,
--5.72801716175861619362e-01, -5.72590101961756081650e-01,
--5.72378596797541217001e-01, -5.72167211528335384330e-01,
--5.71955941709068382828e-01, -5.71744794274904322151e-01,
--5.71533757106126860670e-01, -5.71322838218824013978e-01,
--5.71112040020102962323e-01, -5.70901356041317420420e-01,
--5.70690787398203669412e-01, -5.70480336096462870010e-01,
--5.70270004173424105431e-01, -5.70059781474071325391e-01,
--5.69849684229397412949e-01, -5.69639691198059239241e-01,
--5.69429826410952522053e-01, -5.69220070865192440124e-01,
--5.69010431837938868149e-01, -5.68800910399309023191e-01,
--5.68591506167543392358e-01, -5.68382208423693136012e-01,
--5.68173038073570446649e-01, -5.67963978092230536987e-01,
--5.67755030970157004155e-01, -5.67546203770359025675e-01,
--5.67337488102058862260e-01, -5.67128888113616835831e-01,
--5.66920406778240515422e-01, -5.66712039230608977114e-01,
--5.66503779607057222911e-01, -5.66295645051695717420e-01,
--5.66087617555229849486e-01, -5.65879707307245127801e-01,
--5.65671913910436696682e-01, -5.65464228764436582786e-01,
--5.65256664316280965643e-01, -5.65049212905805120499e-01,
--5.64841870374890531181e-01, -5.64634649840305424817e-01,
--5.64427536520706540912e-01, -5.64220542897088006562e-01,
--5.64013656178556255227e-01, -5.63806892695951078487e-01,
--5.63600233444419784767e-01, -5.63393693409048657017e-01,
--5.63187265181959162419e-01, -5.62980952233706921639e-01,
--5.62774748089948873009e-01, -5.62568664001630525107e-01,
--5.62362683791054585036e-01, -5.62156827390452251691e-01,
--5.61951075952079159848e-01, -5.61745440231198656100e-01,
--5.61539918406243399041e-01, -5.61334507008219185664e-01,
--5.61129210558799051967e-01, -5.60924025616156063379e-01,
--5.60718950250054470885e-01, -5.60513995623263650003e-01,
--5.60309141366683527430e-01, -5.60104413090462549540e-01,
--5.59899784602460259819e-01, -5.59695279181735561025e-01,
--5.59490874607678101427e-01, -5.59286591780185582401e-01,
--5.59082414023761575805e-01, -5.58878353612881406676e-01,
--5.58674400476881993782e-01, -5.58470560272198546237e-01,
--5.58266831619624648297e-01, -5.58063214379549865640e-01,
--5.57859710489623239482e-01, -5.57656312338858040079e-01,
--5.57453037257682026961e-01, -5.57249857062983466882e-01,
--5.57046800101556049967e-01, -5.56843848224561788207e-01,
--5.56641012152947034508e-01, -5.56438278327634150422e-01,
--5.56235667912246767308e-01, -5.56033154514851135630e-01,
--5.55830766660204256269e-01, -5.55628472520565130921e-01,
--5.55426303826917155959e-01, -5.55224232538292339356e-01,
--5.55022283208224775919e-01, -5.54820430367028993857e-01,
--5.54618706636430314205e-01, -5.54417074054438074882e-01,
--5.54215562440321773963e-01, -5.54014157534220008650e-01,
--5.53812864204566768223e-01, -5.53611677237488386538e-01,
--5.53410601444173755326e-01, -5.53209633969611869198e-01,
--5.53008781422658302063e-01, -5.52808031398771770881e-01,
--5.52607393379650480014e-01, -5.52406864194784130717e-01,
--5.52206447044515491562e-01, -5.52006132297983898027e-01,
--5.51805932926547226813e-01, -5.51605840203247654863e-01,
--5.51405853712816806933e-01, -5.51205983843285340917e-01,
--5.51006211809542234548e-01, -5.50806557660515672126e-01,
--5.50607004689088852523e-01, -5.50407566147187443661e-01,
--5.50208228085966921661e-01, -5.50009010697139366641e-01,
--5.49809891866183120257e-01, -5.49610883980118702929e-01,
--5.49411981957127704135e-01, -5.49213193737463911681e-01,
--5.49014503817799592866e-01, -5.48815932743580869868e-01,
--5.48617458539834013109e-01, -5.48419103857524015133e-01,
--5.48220844771248438931e-01, -5.48022698452298229199e-01,
--5.47824664844393738328e-01, -5.47626727001364610459e-01,
--5.47428908060687779980e-01, -5.47231188297979453949e-01,
--5.47033578769815509446e-01, -5.46836077326017133693e-01,
--5.46638681510724033785e-01, -5.46441392121685520777e-01,
--5.46244208423764421312e-01, -5.46047132559760117765e-01,
--5.45850167869482705285e-01, -5.45653298850893309080e-01,
--5.45456550644724424970e-01, -5.45259894069439088327e-01,
--5.45063353655226401351e-01, -5.44866916342223062131e-01,
--5.44670587487950941252e-01, -5.44474358722185636239e-01,
--5.44278246992432546136e-01, -5.44082226406505276017e-01,
--5.43886327706291639039e-01, -5.43690520871651483681e-01,
--5.43494828186031564421e-01, -5.43299235239269484588e-01,
--5.43103755036826063574e-01, -5.42908372318762322273e-01,
--5.42713101591759894404e-01, -5.42517933616644687511e-01,
--5.42322868491689424886e-01, -5.42127915062977416838e-01,
--5.41933060199644156540e-01, -5.41738314051451785858e-01,
--5.41543671501958590042e-01, -5.41349131691297391633e-01,
--5.41154703175379503399e-01, -5.40960374942168753520e-01,
--5.40766148956284276039e-01, -5.40572028371287816029e-01,
--5.40378020960053717658e-01, -5.40184103653394309674e-01,
--5.39990305075831233950e-01, -5.39796600853690300426e-01,
--5.39603003977793482804e-01, -5.39409509210268311996e-01,
--5.39216124511781913498e-01, -5.39022834453409704913e-01,
--5.38829659262570759282e-01, -5.38636578161997059411e-01,
--5.38443609329856687218e-01, -5.38250734358359017584e-01,
--5.38057975172885782911e-01, -5.37865307183183372075e-01,
--5.37672750945531352507e-01, -5.37480293528547869997e-01,
--5.37287943749739205224e-01, -5.37095690446331985868e-01,
--5.36903547100173295092e-01, -5.36711504474260636677e-01,
--5.36519563683013567257e-01, -5.36327729505757688777e-01,
--5.36135992886641155053e-01, -5.35944362918005068330e-01,
--5.35752834638077879426e-01, -5.35561407625734231530e-01,
--5.35370088527245657772e-01, -5.35178862354523610101e-01,
--5.34987748886039060636e-01, -5.34796728699478363112e-01,
--5.34605815002141993020e-01, -5.34415007914754935925e-01,
--5.34224293747115996922e-01, -5.34033693611692839021e-01,
--5.33843181452299697654e-01, -5.33652784501857047061e-01,
--5.33462475764223453822e-01, -5.33272280111689811477e-01,
--5.33082180930588456214e-01, -5.32892186275686574604e-01,
--5.32702291717452758313e-01, -5.32512495743376668145e-01,
--5.32322808833029625930e-01, -5.32133212932378696358e-01,
--5.31943725074500606276e-01, -5.31754339884605298217e-01,
--5.31565050652905601858e-01, -5.31375867241598021096e-01,
--5.31186779263425279396e-01, -5.30997796053478632317e-01,
--5.30808913010392569021e-01, -5.30620128028665871689e-01,
--5.30431454131669366525e-01, -5.30242863683162979349e-01,
--5.30054387149510808364e-01, -5.29866008532592913660e-01,
--5.29677727830911937446e-01, -5.29489549872706133371e-01,
--5.29301466522391517167e-01, -5.29113494318193988697e-01,
--5.28925608770407507109e-01, -5.28737835420275414933e-01,
--5.28550152471884304717e-01, -5.28362576864161215262e-01,
--5.28175096164924973152e-01, -5.27987720812230887368e-01,
--5.27800432661909901810e-01, -5.27613260324969468584e-01,
--5.27426174556774984836e-01, -5.27239196669631482450e-01,
--5.27052315362437129309e-01, -5.26865532175552986338e-01,
--5.26678852248636530931e-01, -5.26492264658567798996e-01,
--5.26305785606426601575e-01, -5.26119394738626899866e-01,
--5.25933112564948679335e-01, -5.25746922103342950727e-01,
--5.25560837244612333308e-01, -5.25374841759336907998e-01,
--5.25188953146781378756e-01, -5.25003162342790208328e-01,
--5.24817465752979828153e-01, -5.24631875643167933099e-01,
--5.24446368896209325072e-01, -5.24260981011384075146e-01,
--5.24075671339813808913e-01, -5.23890477570763124504e-01,
--5.23705367827149603777e-01, -5.23520364872812615786e-01,
--5.23335454232961572174e-01, -5.23150648691175557126e-01,
--5.22965933939672056319e-01, -5.22781320898389578744e-01,
--5.22596802547097949443e-01, -5.22412384870908130807e-01,
--5.22228062125477787703e-01, -5.22043840127194180845e-01,
--5.21859712530721830959e-01, -5.21675687725144388018e-01,
--5.21491749675332627589e-01, -5.21307920605108998657e-01,
--5.21124183533665741308e-01, -5.20940539456928863871e-01,
--5.20757001372001870898e-01, -5.20573549822157310984e-01,
--5.20390204933718125702e-01, -5.20206950361603026600e-01,
--5.20023797832201872815e-01, -5.19840739136778307028e-01,
--5.19657773032146108605e-01, -5.19474912699786184334e-01,
--5.19292140184574591011e-01, -5.19109469422041946984e-01,
--5.18926896152802741291e-01, -5.18744412302997615072e-01,
--5.18562032075707168843e-01, -5.18379740260081822711e-01,
--5.18197549968825610378e-01, -5.18015457489585662287e-01,
--5.17833453383197195308e-01, -5.17651556766932641196e-01,
--5.17469745314348417153e-01, -5.17288033334592833867e-01,
--5.17106419445129028567e-01, -5.16924894866955919603e-01,
--5.16743473746873793750e-01, -5.16562141804293717406e-01,
--5.16380908487159562270e-01, -5.16199772636025677741e-01,
--5.16018729440732126790e-01, -5.15837776949621074074e-01,
--5.15656927779485463326e-01, -5.15476166942422153738e-01,
--5.15295508245639188871e-01, -5.15114933799949437088e-01,
--5.14934467827279918062e-01, -5.14754087208464383707e-01,
--5.14573804318886995901e-01, -5.14393615127918146790e-01,
--5.14213523382693216135e-01, -5.14033518125299626611e-01,
--5.13853617088510961075e-01, -5.13673805002628713900e-01,
--5.13494091686059750401e-01, -5.13314464310747786691e-01,
--5.13134942018768192007e-01, -5.12955505773359687893e-01,
--5.12776167876007660240e-01, -5.12596920509274522892e-01,
--5.12417771465554672261e-01, -5.12238708568578005043e-01,
--5.12059750379289191358e-01, -5.11880879533663235570e-01,
--5.11702102223372312650e-01, -5.11523422221623169648e-01,
--5.11344829419787094693e-01, -5.11166338127431063576e-01,
--5.10987934742527905030e-01, -5.10809625836007308308e-01,
--5.10631409902048583049e-01, -5.10453286393003913268e-01,
--5.10275259005286696556e-01, -5.10097324676761276763e-01,
--5.09919480783686318581e-01, -5.09741729707290813778e-01,
--5.09564075722271581093e-01, -5.09386510524484137363e-01,
--5.09209040704066917549e-01, -5.09031659380481893429e-01,
--5.08854376309871736517e-01, -5.08677181699944691573e-01,
--5.08500082611985537717e-01, -5.08323071769016254784e-01,
--5.08146160041792915862e-01, -5.07969333576011261577e-01,
--5.07792603390520680406e-01, -5.07615961615968891429e-01,
--5.07439417535044401397e-01, -5.07262964238087699087e-01,
--5.07086597729305976756e-01, -5.06910329725660746547e-01,
--5.06734150882708900276e-01, -5.06558064509521788210e-01,
--5.06382066714256118267e-01, -5.06206169755213153394e-01,
--5.06030350842774145903e-01, -5.05854632997757347468e-01,
--5.05679002805864419301e-01, -5.05503468551726342639e-01,
--5.05328021686990758177e-01, -5.05152665768693220905e-01,
--5.04977406292914432484e-01, -5.04802228894167148709e-01,
--5.04627152010708512897e-01, -5.04452160958478557085e-01,
--5.04277262507847989781e-01, -5.04102455437264618254e-01,
--5.03927737862568170257e-01, -5.03753107366079477814e-01,
--5.03578575502675152009e-01, -5.03404131998141490811e-01,
--5.03229772866844449197e-01, -5.03055513149661570615e-01,
--5.02881341372201307038e-01, -5.02707254863539287904e-01,
--5.02533264605894314236e-01, -5.02359362868927239454e-01,
--5.02185547240035057293e-01, -5.02011835099967607121e-01,
--5.01838192865942445131e-01, -5.01664659257242795398e-01,
--5.01491202386485701581e-01, -5.01317844028692949365e-01,
--5.01144573674645599226e-01, -5.00971389234455277695e-01,
--5.00798298401023855853e-01, -5.00625294844373347480e-01,
--5.00452385015643708144e-01, -5.00279560616122997985e-01,
--5.00106826037778007255e-01, -4.99934183187324188147e-01,
--4.99761631221804392133e-01, -4.99589160430459866546e-01,
--4.99416788147540702258e-01, -4.99244499450290479814e-01,
--4.99072303167870379159e-01, -4.98900190082264438640e-01,
--4.98728177060504151985e-01, -4.98556239380091414937e-01,
--4.98384403184633395512e-01, -4.98212644501553447718e-01,
--4.98040988374067628008e-01, -4.97869403305372104640e-01,
--4.97697923184240553773e-01, -4.97526522183478925321e-01,
--4.97355213843734156320e-01, -4.97183992181355394191e-01,
--4.97012856414427717233e-01, -4.96841815654261997892e-01,
--4.96670856589271125792e-01, -4.96499989826879928323e-01,
--4.96329208600718163602e-01, -4.96158518192971298433e-01,
--4.95987915417138214291e-01, -4.95817396561167578195e-01,
--4.95646968483893668456e-01, -4.95476629813774605005e-01,
--4.95306379178141298336e-01, -4.95136212263342589956e-01,
--4.94966136520781141428e-01, -4.94796148810238756166e-01,
--4.94626243065314996628e-01, -4.94456435515959080718e-01,
--4.94286700836386871938e-01, -4.94117068220431165937e-01,
--4.93947513273770733022e-01, -4.93778048500503219387e-01,
--4.93608670630300450100e-01, -4.93439380240378033804e-01,
--4.93270178292201766368e-01, -4.93101060362692411587e-01,
--4.92932032006830334048e-01, -4.92763086603644373529e-01,
--4.92594233906167910941e-01, -4.92425463874980429146e-01,
--4.92256784562988658482e-01, -4.92088184973856646032e-01,
--4.91919678688281070134e-01, -4.91751255907422357705e-01,
--4.91582919894200887079e-01, -4.91414667395775106584e-01,
--4.91246508160590455994e-01, -4.91078428799448130082e-01,
--4.90910439593086167509e-01, -4.90742535159492621055e-01,
--4.90574715570106012485e-01, -4.90406985921184590538e-01,
--4.90239336932127289792e-01, -4.90071778277338720997e-01,
--4.89904302891543297349e-01, -4.89736918185567804418e-01,
--4.89569612757251415580e-01, -4.89402391276797965602e-01,
--4.89235268817294621790e-01, -4.89068213943802065913e-01,
--4.88901259091894080377e-01, -4.88734384185310899440e-01,
--4.88567592390033778038e-01, -4.88400891118397850743e-01,
--4.88234269906823503682e-01, -4.88067740845552044959e-01,
--4.87901288388939091689e-01, -4.87734929101708958310e-01,
--4.87568645798221456111e-01, -4.87402457128699562183e-01,
--4.87236350381375693530e-01, -4.87070324225484241332e-01,
--4.86904385519984495012e-01, -4.86738530511547085045e-01,
--4.86572767354529089889e-01, -4.86407078360703515330e-01,
--4.86241481425138122319e-01, -4.86075967359270388890e-01,
--4.85910532670543182654e-01, -4.85745189341874772371e-01,
--4.85579926461763289325e-01, -4.85414753341555094135e-01,
--4.85249654823238341095e-01, -4.85084648699901588298e-01,
--4.84919723660684809374e-01, -4.84754884804198205028e-01,
--4.84590123046861998013e-01, -4.84425458448513146514e-01,
--4.84260864556867121067e-01, -4.84096360065999875566e-01,
--4.83931941355376094016e-01, -4.83767604213061086504e-01,
--4.83603346755586915862e-01, -4.83439180728759743122e-01,
--4.83275094560436269120e-01, -4.83111089265769844125e-01,
--4.82947172356291476447e-01, -4.82783335122464629663e-01,
--4.82619582539163261004e-01, -4.82455914592298529264e-01,
--4.82292326363351897545e-01, -4.82128826364616291933e-01,
--4.81965407817179114502e-01, -4.81802066972656928279e-01,
--4.81638814427624573078e-01, -4.81475645071778979300e-01,
--4.81312557573886912188e-01, -4.81149551193313373965e-01,
--4.80986630223831979070e-01, -4.80823789406853552286e-01,
--4.80661034307090506701e-01, -4.80498359100152816481e-01,
--4.80335770343018442219e-01, -4.80173258808035297029e-01,
--4.80010832497092865268e-01, -4.79848490982026310014e-01,
--4.79686227973605716635e-01, -4.79524046705174122884e-01,
--4.79361951708459965715e-01, -4.79199932799077243928e-01,
--4.79038003831099401530e-01, -4.78876153100232238025e-01,
--4.78714380041965981150e-01, -4.78552698618633920447e-01,
--4.78391087073025467191e-01, -4.78229573768165938663e-01,
--4.78068122888519353442e-01, -4.77906771102107552629e-01,
--4.77745485783475642982e-01, -4.77584293711196150589e-01,
--4.77423176275788341272e-01, -4.77262147608990328074e-01,
--4.77101192145071517636e-01, -4.76940324487603428683e-01,
--4.76779535315644098503e-01, -4.76618824957646625151e-01,
--4.76458201420741689347e-01, -4.76297654699695649505e-01,
--4.76137194456570100876e-01, -4.75976803224222311250e-01,
--4.75816507681549927256e-01, -4.75656285635331022021e-01,
--4.75496143300199403114e-01, -4.75336089186713772747e-01,
--4.75176105389747416297e-01, -4.75016210315764575434e-01,
--4.74856392947519134751e-01, -4.74696656595788579747e-01,
--4.74536999034709916501e-01, -4.74377425856956969064e-01,
--4.74217928093568941161e-01, -4.74058513675973014490e-01,
--4.73899182199162827267e-01, -4.73739927351737866168e-01,
--4.73580752432562757104e-01, -4.73421661733451903942e-01,
--4.73262645964154682332e-01, -4.73103715642114674989e-01,
--4.72944860339552519690e-01, -4.72786088898399126101e-01,
--4.72627398730451619979e-01, -4.72468780170721247558e-01,
--4.72310252115622830615e-01, -4.72151793347969528369e-01,
--4.71993425136610800230e-01, -4.71835128326818731281e-01,
--4.71676913565172273302e-01, -4.71518779771825324865e-01,
--4.71360720619582784785e-01, -4.71202751321201207535e-01,
--4.71044850880461440923e-01, -4.70887032190129728448e-01,
--4.70729298202972046283e-01, -4.70571635391029530204e-01,
--4.70414061385758586198e-01, -4.70256552716906972567e-01,
--4.70099140930541448125e-01, -4.69941790367873535317e-01,
--4.69784533886893507226e-01, -4.69627342769655231614e-01,
--4.69470243150597432713e-01, -4.69313215089266821956e-01,
--4.69156267509552749040e-01, -4.68999395832224053038e-01,
--4.68842609450314307118e-01, -4.68685897722662947462e-01,
--4.68529260293265359394e-01, -4.68372709227301453616e-01,
--4.68216230147668388550e-01, -4.68059834969985155695e-01,
--4.67903512760620088340e-01, -4.67747272986739126566e-01,
--4.67591111065052189577e-01, -4.67435024685682654066e-01,
--4.67279016495556198674e-01, -4.67123089392717960600e-01,
--4.66967240313931553075e-01, -4.66811467438227656324e-01,
--4.66655769936848929813e-01, -4.66500152945792889714e-01,
--4.66344619101570212472e-01, -4.66189152722139621421e-01,
--4.66033769195671743191e-01, -4.65878467355010317252e-01,
--4.65723236480608038246e-01, -4.65568087090199089761e-01,
--4.65413010184134667835e-01, -4.65258020067406741216e-01,
--4.65103102047306760092e-01, -4.64948255886194261599e-01,
--4.64793497227340202116e-01, -4.64638808438783912358e-01,
--4.64484199701613809097e-01, -4.64329670275179240413e-01,
--4.64175212940993731081e-01, -4.64020834961912320704e-01,
--4.63866536856742783801e-01, -4.63712309287399704338e-01,
--4.63558166735674515024e-01, -4.63404094140099642729e-01,
--4.63250103737141538662e-01, -4.63096183994143872908e-01,
--4.62942346453523445593e-01, -4.62788578830010732812e-01,
--4.62634896370526571552e-01, -4.62481283900268602682e-01,
--4.62327753343912351003e-01, -4.62174294529301699086e-01,
--4.62020913868642191247e-01, -4.61867607061139495706e-01,
--4.61714384897765395266e-01, -4.61561230867168159619e-01,
--4.61408155520300011787e-01, -4.61255155516445081165e-01,
--4.61102233667515015725e-01, -4.60949382066578872141e-01,
--4.60796618353578379956e-01, -4.60643913403289584352e-01,
--4.60491299021441868877e-01, -4.60338755341436867141e-01,
--4.60186285320456245351e-01, -4.60033896996370872401e-01,
--4.59881577612257952392e-01, -4.59729336630324780799e-01,
--4.59577171310406873417e-01, -4.59425083150955204658e-01,
--4.59273068898329361875e-01, -4.59121128892770402619e-01,
--4.58969265026953621156e-01, -4.58817480565808177850e-01,
--4.58665760556941526360e-01, -4.58514128017382727176e-01,
--4.58362561710762062006e-01, -4.58211078862046317095e-01,
--4.58059665335349530668e-01, -4.57908326921637853779e-01,
--4.57757065768802040573e-01, -4.57605878670184207380e-01,
--4.57454765128654905482e-01, -4.57303730339389313819e-01,
--4.57152765194686672157e-01, -4.57001878578433717859e-01,
--4.56851066414525497361e-01, -4.56700324947624303196e-01,
--4.56549662099315856079e-01, -4.56399072290335383606e-01,
--4.56248558740286580537e-01, -4.56098114150018663082e-01,
--4.55947753320660786880e-01, -4.55797457874459521765e-01,
--4.55647241817815684684e-01, -4.55497101030491791107e-01,
--4.55347026811166788463e-01, -4.55197035733620636311e-01,
--4.55047114907537797457e-01, -4.54897265792787275362e-01,
--4.54747495440209426043e-01, -4.54597796538315446213e-01,
--4.54448168930477292005e-01, -4.54298620554697607510e-01,
--4.54149142167335262421e-01, -4.53999740453209232882e-01,
--4.53850409092556528190e-01, -4.53701155503739850250e-01,
--4.53551967508941333840e-01, -4.53402864049327503082e-01,
--4.53253826241534985009e-01, -4.53104865974366610715e-01,
--4.52955976927715830982e-01, -4.52807161317335338246e-01,
--4.52658416600321633627e-01, -4.52509750732534687945e-01,
--4.52361156785181017792e-01, -4.52212632165832073561e-01,
--4.52064182997125807439e-01, -4.51915809732679141231e-01,
--4.51767504435387212691e-01, -4.51619276048310869243e-01,
--4.51471119088053707280e-01, -4.51323035369269209838e-01,
--4.51175023116738904694e-01, -4.51027087616684640992e-01,
--4.50879220675307723631e-01, -4.50731427429839681675e-01,
--4.50583706701023323227e-01, -4.50436058068656608455e-01,
--4.50288484392804111422e-01, -4.50140985829281470298e-01,
--4.49993547718889774778e-01, -4.49846195014996619310e-01,
--4.49698909618556408319e-01, -4.49551694268899182383e-01,
--4.49404556107751540495e-01, -4.49257486180618614835e-01,
--4.49110490812010820783e-01, -4.48963564834253037183e-01,
--4.48816711417663771755e-01, -4.48669934224515287724e-01,
--4.48523226611271530473e-01, -4.48376589138061998341e-01,
--4.48230026207904586055e-01, -4.48083530824469000731e-01,
--4.47937115394188400952e-01, -4.47790759639401680925e-01,
--4.47644487560837300855e-01, -4.47498279312596392021e-01,
--4.47352145574061499378e-01, -4.47206085825344268336e-01,
--4.47060091466615849853e-01, -4.46914175065337260229e-01,
--4.46768328479106580087e-01, -4.46622549358328568836e-01,
--4.46476844067914602210e-01, -4.46331211849556985793e-01,
--4.46185649371574566402e-01, -4.46040159543129255404e-01,
--4.45894734059254282954e-01, -4.45749392054783755146e-01,
--4.45604109998832320638e-01, -4.45458907000752302174e-01,
--4.45313763681632224234e-01, -4.45168704920153035509e-01,
--4.45023706459857115725e-01, -4.44878784568539797917e-01,
--4.44733931959089667796e-01, -4.44589150336285765519e-01,
--4.44444440168124510482e-01, -4.44299797877839797167e-01,
--4.44155226128629454507e-01, -4.44010729020339223183e-01,
--4.43866298666259206929e-01, -4.43721940161641459355e-01,
--4.43577652188057836025e-01, -4.43433434923970193342e-01,
--4.43289288973958195417e-01, -4.43145211741241440428e-01,
--4.43001201832491808830e-01, -4.42857267417801292453e-01,
--4.42713399561871723265e-01, -4.42569603484062712440e-01,
--4.42425878418105156253e-01, -4.42282222209714359629e-01,
--4.42138633066428476948e-01, -4.41995120312379197181e-01,
--4.41851670795243789414e-01, -4.41708294272568247063e-01,
--4.41564987218233395705e-01, -4.41421753979170328197e-01,
--4.41278580693772737309e-01, -4.41135484933924015838e-01,
--4.40992454977177983366e-01, -4.40849497789696342931e-01,
--4.40706608405147748364e-01, -4.40563788546826096137e-01,
--4.40421036287886535909e-01, -4.40278357612415072175e-01,
--4.40135741686783155124e-01, -4.39993203509676911178e-01,
--4.39850727447593570218e-01, -4.39708327508245289117e-01,
--4.39565985646027390654e-01, -4.39423726508034517835e-01,
--4.39281525430847197278e-01, -4.39139400541693647462e-01,
--4.38997337522693764633e-01, -4.38855353166397843534e-01,
--4.38713428148096995507e-01, -4.38571578270592898896e-01,
--4.38429793175001303318e-01, -4.38288076142315019545e-01,
--4.38146435583318394347e-01, -4.38004856925622299002e-01,
--4.37863345344516097235e-01, -4.37721905887101636612e-01,
--4.37580535541424453516e-01, -4.37439230132329770484e-01,
--4.37297998196520043557e-01, -4.37156832114081794760e-01,
--4.37015731476225077756e-01, -4.36874705538022933826e-01,
--4.36733740039714768422e-01, -4.36592849237657620876e-01,
--4.36452023893796947629e-01, -4.36311264352250760545e-01,
--4.36170578474602832486e-01, -4.36029956822141295802e-01,
--4.35889406936388223990e-01, -4.35748919265838252635e-01,
--4.35608502123248308990e-01, -4.35468154160838893940e-01,
--4.35327872456970021986e-01, -4.35187658870110516407e-01,
--4.35047508888025347140e-01, -4.34907438701185977692e-01,
--4.34767421587553992701e-01, -4.34627481189585829213e-01,
--4.34487605538849241960e-01, -4.34347796514875039708e-01,
--4.34208058567971622033e-01, -4.34068383193245921348e-01,
--4.33928777608219518047e-01, -4.33789243799441504024e-01,
--4.33649766603194375403e-01, -4.33510371160185314920e-01,
--4.33371027950657794481e-01, -4.33231762857705704484e-01,
--4.33092557748064654888e-01, -4.32953425744085129701e-01,
--4.32814354841371762284e-01, -4.32675357583413688900e-01,
--4.32536418152391188841e-01, -4.32397553748481100477e-01,
--4.32258756092280593819e-01, -4.32120018749481138443e-01,
--4.31981353384978172816e-01, -4.31842753301111881292e-01,
--4.31704222447754082381e-01, -4.31565751723078538937e-01,
--4.31427351232775313505e-01, -4.31289023183523967386e-01,
--4.31150748642916026299e-01, -4.31012556430421800435e-01,
--4.30874417255794339709e-01, -4.30736352405325817472e-01,
--4.30598350727577461328e-01, -4.30460413190271118378e-01,
--4.30322547073958339148e-01, -4.30184744640451977027e-01,
--4.30047007210207721251e-01, -4.29909337239590294555e-01,
--4.29771734758555123967e-01, -4.29634197190916888864e-01,
--4.29496723635589494616e-01, -4.29359320273103528542e-01,
--4.29221974458292798715e-01, -4.29084708239550083331e-01,
--4.28947490771954986766e-01, -4.28810356331569053623e-01,
--4.28673276890164822728e-01, -4.28536263229363001415e-01,
--4.28399322602652121716e-01, -4.28262437566197862182e-01,
--4.28125625938365672596e-01, -4.27988878593011767837e-01,
--4.27852191864603992322e-01, -4.27715578365543303008e-01,
--4.27579024839372157096e-01, -4.27442538171905417332e-01,
--4.27306115252213791766e-01, -4.27169761638197587050e-01,
--4.27033469385057595780e-01, -4.26897242362347606459e-01,
--4.26761084212522345815e-01, -4.26624987672080846490e-01,
--4.26488955800829794285e-01, -4.26352994798914308738e-01,
--4.26217087981818953946e-01, -4.26081262359846446586e-01,
--4.25945482455656998511e-01, -4.25809784937209889755e-01,
--4.25674136841104333584e-01, -4.25538566297759102142e-01,
--4.25403049628253704384e-01, -4.25267608714368750000e-01,
--4.25132224411385206686e-01, -4.24996906712915012427e-01,
--4.24861657140971293867e-01, -4.24726470789760501834e-01,
--4.24591343408701860085e-01, -4.24456285730042126580e-01,
--4.24321292602986122056e-01, -4.24186362722597742891e-01,
--4.24051495283545076820e-01, -4.23916694812093208800e-01,
--4.23781955184383107849e-01, -4.23647285193715694707e-01,
--4.23512678142488330213e-01, -4.23378129676068470921e-01,
--4.23243652734718089903e-01, -4.23109233439634191409e-01,
--4.22974880838154820850e-01, -4.22840594971471805952e-01,
--4.22706366627480289999e-01, -4.22572210261666414421e-01,
--4.22438110791802323707e-01, -4.22304080563701000894e-01,
--4.22170107628079882556e-01, -4.22036205084515114727e-01,
--4.21902366011597140805e-01, -4.21768582643646250396e-01,
--4.21634870613048051702e-01, -4.21501219859424458569e-01,
--4.21367632640160527657e-01, -4.21234109986093563371e-01,
--4.21100645516489680009e-01, -4.20967252547576220589e-01,
--4.20833917722789996319e-01, -4.20700647624544010750e-01,
--4.20567440455620111806e-01, -4.20434296822478292821e-01,
--4.20301216096496510488e-01, -4.20168200185702556126e-01,
--4.20035242086608417988e-01, -4.19902356729265902047e-01,
--4.19769524924569870095e-01, -4.19636763795404710287e-01,
--4.19504057566950971925e-01, -4.19371418687989383489e-01,
--4.19238846665829001381e-01, -4.19106331022453093560e-01,
--4.18973880635006290518e-01, -4.18841492824669647810e-01,
--4.18709169429573591081e-01, -4.18576905776015473215e-01,
--4.18444707544804173072e-01, -4.18312567862278439357e-01,
--4.18180497366403225445e-01, -4.18048482730721870926e-01,
--4.17916533095482711779e-01, -4.17784647577891687931e-01,
--4.17652820568875982055e-01, -4.17521064211650472231e-01,
--4.17389357894170531793e-01, -4.17257727217915985740e-01,
--4.17126146268366360115e-01, -4.16994637222769082285e-01,
--4.16863181990139164412e-01, -4.16731797229556111262e-01,
--4.16600467923299966344e-01, -4.16469203955557143448e-01,
--4.16338003159045233481e-01, -4.16206864318706237782e-01,
--4.16075783286184552878e-01, -4.15944766694088974290e-01,
--4.15813814512082768893e-01, -4.15682920228903296511e-01,
--4.15552087568195671619e-01, -4.15421319322513860062e-01,
--4.15290611773867390788e-01, -4.15159965825792676153e-01,
--4.15029381582135814543e-01, -4.14898857723975444944e-01,
--4.14768399423150135874e-01, -4.14637998487099423972e-01,
--4.14507660162483249078e-01, -4.14377382831094154270e-01,
--4.14247167719101527794e-01, -4.14117011540035551143e-01,
--4.13986926213605943570e-01, -4.13856889699186047960e-01,
--4.13726922360217130858e-01, -4.13597009487045419451e-01,
--4.13467167203102670126e-01, -4.13337379251928205282e-01,
--4.13207649832448620231e-01, -4.13077989581290716536e-01,
--4.12948385280632379590e-01, -4.12818845637522802150e-01,
--4.12689360217458056646e-01, -4.12559939699663091872e-01,
--4.12430585329354448820e-01, -4.12301281446441181266e-01,
--4.12172044742586951571e-01, -4.12042868814711638059e-01,
--4.11913751407601558263e-01, -4.11784696769319558118e-01,
--4.11655701338700052982e-01, -4.11526763936471140504e-01,
--4.11397892840885515131e-01, -4.11269078469947424459e-01,
--4.11140328521643949600e-01, -4.11011632961894024518e-01,
--4.10883001877293430049e-01, -4.10754427307281178017e-01,
--4.10625919831635100010e-01, -4.10497467443546093513e-01,
--4.10369074062860494934e-01, -4.10240747192873400628e-01,
--4.10112475252298658290e-01, -4.09984263535373982812e-01,
--4.09856113622305340272e-01, -4.09728025073901991338e-01,
--4.09599998066721149304e-01, -4.09472021157853860451e-01,
--4.09344117590636047410e-01, -4.09216261713988505022e-01,
--4.09088477009537043738e-01, -4.08960739905341819078e-01,
--4.08833076504052150835e-01, -4.08705461846365136758e-01,
--4.08577913787489366282e-01, -4.08450419393505292920e-01,
--4.08322990193140944459e-01, -4.08195615357145324964e-01,
--4.08068304322052877176e-01, -4.07941052522718949902e-01,
--4.07813857607316032627e-01, -4.07686722372428311800e-01,
--4.07559649159417780595e-01, -4.07432636982122509117e-01,
--4.07305676267957994519e-01, -4.07178783941681832204e-01,
--4.07051946580331669434e-01, -4.06925167423387412757e-01,
--4.06798446935890845033e-01, -4.06671791194066489794e-01,
--4.06545186603844865836e-01, -4.06418647937667909531e-01,
--4.06292163227448155371e-01, -4.06165743221352681935e-01,
--4.06039379246542819768e-01, -4.05913072894464155294e-01,
--4.05786826472172346136e-01, -4.05660640335870792406e-01,
--4.05534510753690069507e-01, -4.05408441121033802368e-01,
--4.05282432764027089611e-01, -4.05156476982766022843e-01,
--4.05030584899000456467e-01, -4.04904754253246346174e-01,
--4.04778971785819452478e-01, -4.04653259267328757609e-01,
--4.04527598754375772305e-01, -4.04401995546463499664e-01,
--4.04276457564847535586e-01, -4.04150970176745560902e-01,
--4.04025550464417959606e-01, -4.03900178259218922694e-01,
--4.03774872449987054512e-01, -4.03649622353497550264e-01,
--4.03524429462068900953e-01, -4.03399298489652113897e-01,
--4.03274220263995841762e-01, -4.03149204408413008860e-01,
--4.03024243953643779292e-01, -4.02899345977544842690e-01,
--4.02774500313819894259e-01, -4.02649718198055062146e-01,
--4.02524987205944762003e-01, -4.02400323447383079234e-01,
--4.02275708434712164774e-01, -4.02151155305185303845e-01,
--4.02026663525060001803e-01, -4.01902222092053285074e-01,
--4.01777842021426634389e-01, -4.01653523782029453493e-01,
--4.01529254483203368320e-01, -4.01405051691118952562e-01,
--4.01280902735236921774e-01, -4.01156807203930376726e-01,
--4.01032779414245976746e-01, -4.00908796037237169507e-01,
--4.00784880192289361123e-01, -4.00661018610160790665e-01,
--4.00537218896692692738e-01, -4.00413463897760724119e-01,
--4.00289781096409003069e-01, -4.00166144769810827597e-01,
--4.00042574446873522298e-01, -3.99919051262408564718e-01,
--3.99795597620649201254e-01, -3.99672187473334661334e-01,
--3.99548846729920414944e-01, -3.99425553680199330042e-01,
--3.99302324552061438379e-01, -3.99179149671766264618e-01,
--3.99056029154643832069e-01, -3.98932972213114744875e-01,
--3.98809964233907909836e-01, -3.98687020930074687008e-01,
--3.98564127590293748593e-01, -3.98441293819186026504e-01,
--3.98318518261330523078e-01, -3.98195796733791018696e-01,
--3.98073136147862105538e-01, -3.97950524217172363350e-01,
--3.97827980824171201224e-01, -3.97705483428916706234e-01,
--3.97583046429371866903e-01, -3.97460668301239106182e-01,
--3.97338340743746409878e-01, -3.97216076132537621035e-01,
--3.97093866793421013117e-01, -3.96971708695779135212e-01,
--3.96849614460402178029e-01, -3.96727571162359238244e-01,
--3.96605584352971551887e-01, -3.96483655927755584969e-01,
--3.96361783929194744225e-01, -3.96239963115969096030e-01,
--3.96118205235003517650e-01, -3.95996502067531230828e-01,
--3.95874852389952291976e-01, -3.95753258139562358320e-01,
--3.95631723966650583613e-01, -3.95510240508634480783e-01,
--3.95388818213813331148e-01, -3.95267447003314842391e-01,
--3.95146134392586834139e-01, -3.95024882750451555857e-01,
--3.94903675086172745168e-01, -3.94782532290389842622e-01,
--3.94661443670635547765e-01, -3.94540408754397275981e-01,
--3.94419428948322492445e-01, -3.94298510274204649928e-01,
--3.94177638414093090002e-01, -3.94056831090384751537e-01,
--3.93936076434925896983e-01, -3.93815370670321740487e-01,
--3.93694729598434378648e-01, -3.93574138492694181046e-01,
--3.93453606929904053935e-01, -3.93333122505293453219e-01,
--3.93212702909399636209e-01, -3.93092334488327865838e-01,
--3.92972020639507368944e-01, -3.92851761427115364622e-01,
--3.92731564372885089131e-01, -3.92611410501577051679e-01,
--3.92491323488932619679e-01, -3.92371283486580180178e-01,
--3.92251301508781347049e-01, -3.92131375698602735458e-01,
--3.92011502469516659453e-01, -3.91891686848696019219e-01,
--3.91771923489848072908e-01, -3.91652217575099825808e-01,
--3.91532564898107005025e-01, -3.91412965926249023507e-01,
--3.91293422996351725196e-01, -3.91173937469604160455e-01,
--3.91054501564423617754e-01, -3.90935122694210157590e-01,
--3.90815801338688262323e-01, -3.90696528165559997525e-01,
--3.90577317672550716754e-01, -3.90458154728669848410e-01,
--3.90339051832541139575e-01, -3.90219996472402241849e-01,
--3.90101003844937177512e-01, -3.89982059202784614449e-01,
--3.89863172811093283698e-01, -3.89744340708371272974e-01,
--3.89625557299567049085e-01, -3.89506837750507151075e-01,
--3.89388160520550086208e-01, -3.89269551902951205236e-01,
--3.89150984144685740951e-01, -3.89032474909371484006e-01,
--3.88914025999045953608e-01, -3.88795623717812122155e-01,
--3.88677276343736721742e-01, -3.88558986812192252991e-01,
--3.88440746279492155058e-01, -3.88322564833268879525e-01,
--3.88204433318420472077e-01, -3.88086355915981284781e-01,
--3.87968336232786370488e-01, -3.87850366836331561515e-01,
--3.87732451498057573147e-01, -3.87614593740575663627e-01,
--3.87496786877871923771e-01, -3.87379031779648164147e-01,
--3.87261331653111495754e-01, -3.87143683975602670433e-01,
--3.87026095630551292270e-01, -3.86908552782769032952e-01,
--3.86791070361966748958e-01, -3.86673636012102694970e-01,
--3.86556261875890649904e-01, -3.86438934090259422760e-01,
--3.86321662437166923887e-01, -3.86204444003594771218e-01,
--3.86087280659658360626e-01, -3.85970167837914435172e-01,
--3.85853110762150119939e-01, -3.85736104280530900379e-01,
--3.85619152600736536662e-01, -3.85502255219753564575e-01,
--3.85385409941956580404e-01, -3.85268614876988935158e-01,
--3.85151879781903239142e-01, -3.85035189870587046812e-01,
--3.84918561002825287964e-01, -3.84801978053202931029e-01,
--3.84685452135982874911e-01, -3.84568976271269957756e-01,
--3.84452556088511587795e-01, -3.84336187225683634239e-01,
--3.84219870325564816227e-01, -3.84103607179063666344e-01,
--3.83987401155638841121e-01, -3.83871236986547181846e-01,
--3.83755138849689481084e-01, -3.83639081181560870348e-01,
--3.83523086178925165513e-01, -3.83407135321715386578e-01,
--3.83291246965823451109e-01, -3.83175399735360855402e-01,
--3.83059616074506559258e-01, -3.82943872285916475651e-01,
--3.82828196011304522361e-01, -3.82712556260513536710e-01,
--3.82596982297232990344e-01, -3.82481455112087642689e-01,
--3.82365976775404958765e-01, -3.82250558015250652133e-01,
--3.82135187376646978663e-01, -3.82019866423826903734e-01,
--3.81904600354835643827e-01, -3.81789389165001602500e-01,
--3.81674227674965782509e-01, -3.81559114255094145030e-01,
--3.81444060603281509536e-01, -3.81329055085196044761e-01,
--3.81214099012656737475e-01, -3.81099198772719693906e-01,
--3.80984349857083404167e-01, -3.80869552736027128237e-01,
--3.80754810036734891998e-01, -3.80640110780191776030e-01,
--3.80525473903531141762e-01, -3.80410879340718488528e-01,
--3.80296343715274709485e-01, -3.80181854126763640878e-01,
--3.80067423201666698684e-01, -3.79953035686236617607e-01,
--3.79838706441368301192e-01, -3.79724424804841864667e-01,
--3.79610196212900707913e-01, -3.79496020758661178895e-01,
--3.79381892633415152005e-01, -3.79267823803007442240e-01,
--3.79153794564509094567e-01, -3.79039827060307366047e-01,
--3.78925908303136715904e-01, -3.78812034572059530557e-01,
--3.78698222562220077059e-01, -3.78584453917463370498e-01,
--3.78470740663781501922e-01, -3.78357075405102438737e-01,
--3.78243464523851213865e-01, -3.78129901062271123191e-01,
--3.78016395293092943852e-01, -3.77902935434891784627e-01,
--3.77789524813024024663e-01, -3.77676173083359656424e-01,
--3.77562860648804621277e-01, -3.77449611538380969122e-01,
--3.77336405112449480015e-01, -3.77223255197060902688e-01,
--3.77110149479393752525e-01, -3.76997101032941372978e-01,
--3.76884103404164561013e-01, -3.76771146981984883517e-01,
--3.76658254312513096629e-01, -3.76545400701739807481e-01,
--3.76432606500236743852e-01, -3.76319859703210468638e-01,
--3.76207165627520656592e-01, -3.76094515010522989495e-01,
--3.75981928410063170887e-01, -3.75869377560886674949e-01,
--3.75756887910940862163e-01, -3.75644441813044516199e-01,
--3.75532050880362955336e-01, -3.75419708659158191111e-01,
--3.75307418175345186562e-01, -3.75195173779002910663e-01,
--3.75082983868028740915e-01, -3.74970842852496988318e-01,
--3.74858753518341469846e-01, -3.74746710311752939671e-01,
--3.74634721486163280169e-01, -3.74522781933396164966e-01,
--3.74410892656854399352e-01, -3.74299054751102588945e-01,
--3.74187262834480116602e-01, -3.74075526163193505802e-01,
--3.73963835445819015035e-01, -3.73852196240103518132e-01,
--3.73740606782354212179e-01, -3.73629068569595379490e-01,
--3.73517577377422416163e-01, -3.73406137430558726642e-01,
--3.73294747230386358972e-01, -3.73183408546653716531e-01,
--3.73072115798985137758e-01, -3.72960878363263692581e-01,
--3.72849686668074831175e-01, -3.72738547271451448051e-01,
--3.72627454688548187534e-01, -3.72516413124841627713e-01,
--3.72405422419142928536e-01, -3.72294479010730039459e-01,
--3.72183586127809384880e-01, -3.72072745594147935577e-01,
--3.71961946886472105689e-01, -3.71851207922366477909e-01,
--3.71740512258250443978e-01, -3.71629863047378439234e-01,
--3.71519275296183892898e-01, -3.71408719353291283394e-01,
--3.71298231762544284074e-01, -3.71187774231039768758e-01,
--3.71077385155450356624e-01, -3.70967027473084853817e-01,
--3.70856732806939093372e-01, -3.70746478782946531361e-01,
--3.70636278570893540341e-01, -3.70526124217443408870e-01,
--3.70416023190285881306e-01, -3.70305964747868754383e-01,
--3.70195962036970249720e-01, -3.70086006739641537600e-01,
--3.69976096629158424101e-01, -3.69866237754495619239e-01,
--3.69756430498219990088e-01, -3.69646667281089635892e-01,
--3.69536955685763390811e-01, -3.69427295312589665244e-01,
--3.69317680177515983431e-01, -3.69208112264662047242e-01,
--3.69098600797472087276e-01, -3.68989129249791547593e-01,
--3.68879709799311061857e-01, -3.68770343789034893422e-01,
--3.68661013669255632763e-01, -3.68551743592315017573e-01,
--3.68442521553778989940e-01, -3.68333337891429413169e-01,
--3.68224220906830435052e-01, -3.68115134111169917119e-01,
--3.68006105751164325213e-01, -3.67897126383986028397e-01,
--3.67788183182486683176e-01, -3.67679314546345559211e-01,
--3.67570457935090466606e-01, -3.67461679824609310785e-01,
--3.67352933314014973298e-01, -3.67244250124000692903e-01,
--3.67135594976164825187e-01, -3.67027010208194726104e-01,
--3.66918451154709834849e-01, -3.66809964732578319691e-01,
--3.66701497346674842870e-01, -3.66593104701923799826e-01,
--3.66484751684203469146e-01, -3.66376433638109233470e-01,
--3.66268181947639936968e-01, -3.66159965139171650339e-01,
--3.66051810667975985325e-01, -3.65943684890073561711e-01,
--3.65835627870885249369e-01, -3.65727602399674167621e-01,
--3.65619627846999917242e-01, -3.65511708644844168781e-01,
--3.65403830046463040659e-01, -3.65296001903366029939e-01,
--3.65188221908001264815e-01, -3.65080489439066679935e-01,
--3.64972809289322408510e-01, -3.64865162909030149585e-01,
--3.64757575000899281203e-01, -3.64650032359055575881e-01,
--3.64542540752545218830e-01, -3.64435090311057752199e-01,
--3.64327692395046587315e-01, -3.64220333784750771589e-01,
--3.64113033647018968786e-01, -3.64005773237700502865e-01,
--3.63898563663066054730e-01, -3.63791401593925867175e-01,
--3.63684289240767788520e-01, -3.63577221090830182693e-01,
--3.63470194632930121426e-01, -3.63363225424560787324e-01,
--3.63256298450416181822e-01, -3.63149413510743368505e-01,
--3.63042586419860147107e-01, -3.62935798823731892160e-01,
--3.62829063620695724257e-01, -3.62722369923179577267e-01,
--3.62615726031392693329e-01, -3.62509131983811849764e-01,
--3.62402579326320917197e-01, -3.62296079485166233614e-01,
--3.62189617561219312503e-01, -3.62083219373006803821e-01,
--3.61976841249034064774e-01, -3.61870542649785575939e-01,
--3.61764263515268802429e-01, -3.61658050514519047169e-01,
--3.61551866438354907451e-01, -3.61445746399240541713e-01,
--3.61339654211726535316e-01, -3.61233632449921238106e-01,
--3.61127636409807606377e-01, -3.61021690574636122673e-01,
--3.60915808770648049997e-01, -3.60809955913110880221e-01,
--3.60704146756004706553e-01, -3.60598402071625190324e-01,
--3.60492691072034687760e-01, -3.60387026729721449136e-01,
--3.60281410294411297279e-01, -3.60175846146454869956e-01,
--3.60070315514724181849e-01, -3.59964844399896066740e-01,
--3.59859414625616935712e-01, -3.59754028193141062175e-01,
--3.59648695273804441808e-01, -3.59543395532750997834e-01,
--3.59438155434585460135e-01, -3.59332956510969636632e-01,
--3.59227801467168927907e-01, -3.59122697950459535132e-01,
--3.59017635018213099318e-01, -3.58912626441924731413e-01,
--3.58807650429984748008e-01, -3.58702735673852635134e-01,
--3.58597856254525837461e-01, -3.58493020101329329385e-01,
--3.58388243767708281062e-01, -3.58283497814040119422e-01,
--3.58178816390144483250e-01, -3.58074159391590651769e-01,
--3.57969563679315316840e-01, -3.57865011320968928743e-01,
--3.57760492481530301134e-01, -3.57656042081691105672e-01,
--3.57551619680673171686e-01, -3.57447240362188889407e-01,
--3.57342928935650006039e-01, -3.57238638134922736889e-01,
--3.57134398104680117481e-01, -3.57030224939330231848e-01,
--3.56926068820051678454e-01, -3.56821978817270957229e-01,
--3.56717920226812923445e-01, -3.56613915739726006215e-01,
--3.56509953999475215358e-01, -3.56406035389410180692e-01,
--3.56302169732667595170e-01, -3.56198339705092570373e-01,
--3.56094560076684607530e-01, -3.55990833795084338220e-01,
--3.55887134299729290809e-01, -3.55783497830003514473e-01,
--3.55679895395900946831e-01, -3.55576339662835527733e-01,
--3.55472831310899628487e-01, -3.55369377306052169896e-01,
--3.55265949104364819888e-01, -3.55162586860366058517e-01,
--3.55059247906838293396e-01, -3.54955973351155584794e-01,
--3.54852730838006835690e-01, -3.54749541626036890563e-01,
--3.54646397739461272103e-01, -3.54543287471030810210e-01,
--3.54440243273785093869e-01, -3.54337214098040198529e-01,
--3.54234259930783779158e-01, -3.54131325984198830348e-01,
--3.54028459663857986151e-01, -3.53925615542254046186e-01,
--3.53822838516876625459e-01, -3.53720083832240850263e-01,
--3.53617396205830325506e-01, -3.53514730930161669153e-01,
--3.53412132710718696060e-01, -3.53309556840015970280e-01,
--3.53207048035544479703e-01, -3.53104561541793093848e-01,
--3.53002142256347628546e-01, -3.52899744751343780180e-01,
--3.52797416433685007142e-01, -3.52695102510589719724e-01,
--3.52592862987571531441e-01, -3.52490646745808322571e-01,
--3.52388486496365838097e-01, -3.52286369569029089721e-01,
--3.52184291581849773234e-01, -3.52082260381094913626e-01,
--3.51980271315386394892e-01, -3.51878335143969156462e-01,
--3.51776435832983791485e-01, -3.51674582055139683945e-01,
--3.51572777505199940418e-01, -3.51470998731403250215e-01,
--3.51369291142547612861e-01, -3.51267608313911683382e-01,
--3.51165978776873832778e-01, -3.51064379534125281523e-01,
--3.50962851691780874930e-01, -3.50861343229657896003e-01,
--3.50759887011921178690e-01, -3.50658470657319421004e-01,
--3.50557110826692830408e-01, -3.50455775609674113902e-01,
--3.50354508931666697169e-01, -3.50253256408391167032e-01,
--3.50152079892852796661e-01, -3.50050920467760762200e-01,
--3.49949817838822341276e-01, -3.49848761507466687881e-01,
--3.49747731410527840090e-01, -3.49646773595756688024e-01,
--3.49545835694024864537e-01, -3.49444947023644092443e-01,
--3.49344109735721275456e-01, -3.49243308259259088722e-01,
--3.49142558023655735777e-01, -3.49041835234058184234e-01,
--3.48941174936996667544e-01, -3.48840550148169781242e-01,
--3.48739966703028425599e-01, -3.48639428244070015417e-01,
--3.48538936717595504433e-01, -3.48438480695904329032e-01,
--3.48338081591755166500e-01, -3.48237709885298063472e-01,
--3.48137395187948728292e-01, -3.48037115629119542248e-01,
--3.47936884376261690299e-01, -3.47836692981899731070e-01,
--3.47736539716742620865e-01, -3.47636439945430031351e-01,
--3.47536378642177512521e-01, -3.47436355842000332839e-01,
--3.47336386430620702725e-01, -3.47236455533619481351e-01,
--3.47136563059466607406e-01, -3.47036724248701466955e-01,
--3.46936922934180436151e-01, -3.46837163840455153796e-01,
--3.46737444236461800351e-01, -3.46637770321905347437e-01,
--3.46538142380770852746e-01, -3.46438553077413002868e-01,
--3.46339009118686147470e-01, -3.46239513364560103081e-01,
--3.46140047668301253925e-01, -3.46040637053390887079e-01,
--3.45941266627862842320e-01, -3.45841926232616447834e-01,
--3.45742649044279204418e-01, -3.45643401922408499694e-01,
--3.45544194845180674402e-01, -3.45445043392074546684e-01,
--3.45345919970482029271e-01, -3.45246852316131280780e-01,
--3.45147824133942959790e-01, -3.45048828165022802850e-01,
--3.44949887388285747480e-01, -3.44850984202191124250e-01,
--3.44752121330503147334e-01, -3.44653305479706351111e-01,
--3.44554529451839786081e-01, -3.44455792980520536517e-01,
--3.44357104329241270335e-01, -3.44258453062156466462e-01,
--3.44159850307413472947e-01, -3.44061284340010375971e-01,
--3.43962768580065580970e-01, -3.43864283423849115273e-01,
--3.43765849162678938100e-01, -3.43667448938496766786e-01,
--3.43569107540475926488e-01, -3.43470787373464980785e-01,
--3.43372524621929409161e-01, -3.43274301550125615634e-01,
--3.43176108213079089637e-01, -3.43077979774689567627e-01,
--3.42979874931300110497e-01, -3.42881811974929173736e-01,
--3.42783803744644011147e-01, -3.42685825295640233978e-01,
--3.42587896512843437247e-01, -3.42490007504838600561e-01,
--3.42392155600618419697e-01, -3.42294361375627742561e-01,
--3.42196589902577508191e-01, -3.42098870908211949438e-01,
--3.42001187468069178799e-01, -3.41903555201509778971e-01,
--3.41805950907295763574e-01, -3.41708407067534913892e-01,
--3.41610884010259296950e-01, -3.41513418534265589255e-01,
--3.41415992523302125328e-01, -3.41318596940095919656e-01,
--3.41221263698247956331e-01, -3.41123941235853045395e-01,
--3.41026692128222064238e-01, -3.40929474098209284172e-01,
--3.40832281920377677675e-01, -3.40735156421879237243e-01,
--3.40638051278251974274e-01, -3.40540999201483007841e-01,
--3.40443982723311333594e-01, -3.40347016653051559487e-01,
--3.40250081573448603933e-01, -3.40153195640724492765e-01,
--3.40056350350729230669e-01, -3.39959539212099759453e-01,
--3.39862774342696183361e-01, -3.39766058465924336573e-01,
--3.39669368570301832833e-01, -3.39572726923125789433e-01,
--3.39476134521916550479e-01, -3.39379565109294734082e-01,
--3.39283055662032762001e-01, -3.39186573937387048083e-01,
--3.39090144874334475933e-01, -3.38993745663194734341e-01,
--3.38897397900228047884e-01, -3.38801082713558243675e-01,
--3.38704809290945374478e-01, -3.38608582104967581472e-01,
--3.38512396429294426525e-01, -3.38416244344927230614e-01,
--3.38320139902449357194e-01, -3.38224079522009613008e-01,
--3.38128041120687727883e-01, -3.38032071906532505245e-01,
--3.37936116888977844397e-01, -3.37840214711788655588e-01,
--3.37744355197438450578e-01, -3.37648540412268438615e-01,
--3.37552749916698147103e-01, -3.37457018699225064218e-01,
--3.37361316652406650896e-01, -3.37265662162290202897e-01,
--3.37170034143870922527e-01, -3.37074476199379025054e-01,
--3.36978924411865332633e-01, -3.36883434384704194553e-01,
--3.36787981731797914087e-01, -3.36692563690679236288e-01,
--3.36597193345572975876e-01, -3.36501865825531210064e-01,
--3.36406565178378635927e-01, -3.36311315380280917431e-01,
--3.36216103533976129469e-01, -3.36120934900604684259e-01,
--3.36025801332866413951e-01, -3.35930707807079897975e-01,
--3.35835664917012943764e-01, -3.35740647663017532931e-01,
--3.35645678394692614788e-01, -3.35550759768515505233e-01,
--3.35455858808978324426e-01, -3.35361015354667779675e-01,
--3.35266214785454208513e-01, -3.35171431039785638895e-01,
--3.35076715928774748754e-01, -3.34982022379972488313e-01,
--3.34887375113354646139e-01, -3.34792767024950199684e-01,
--3.34698201810667450573e-01, -3.34603671790843826273e-01,
--3.34509181636480468214e-01, -3.34414742694976452331e-01,
--3.34320327257476346272e-01, -3.34225967756777042617e-01,
--3.34131629225772386338e-01, -3.34037352044864510603e-01,
--3.33943099066518034324e-01, -3.33848889093505241110e-01,
--3.33754728765755959152e-01, -3.33660595072520660409e-01,
--3.33566506361641812450e-01, -3.33472456955982987648e-01,
--3.33378451216247595479e-01, -3.33284477376757704015e-01,
--3.33190555787780562369e-01, -3.33096661517408021425e-01,
--3.33002806887780833378e-01, -3.32909012245727220503e-01,
--3.32815228585277400608e-01, -3.32721497473031146974e-01,
--3.32627813407268324575e-01, -3.32534156828269700235e-01,
--3.32440544421407024878e-01, -3.32346973708396109526e-01,
--3.32253437917002014679e-01, -3.32159944262706452456e-01,
--3.32066493007559804251e-01, -3.31973075887878610324e-01,
--3.31879703344604704007e-01, -3.31786364229395891456e-01,
--3.31693070342937157413e-01, -3.31599807982572825082e-01,
--3.31506597806498937153e-01, -3.31413415588069915074e-01,
--3.31320270520447546225e-01, -3.31227172409371162232e-01,
--3.31134117542206174445e-01, -3.31041088612008760350e-01,
--3.30948113855706105291e-01, -3.30855164687758329656e-01,
--3.30762260158172449742e-01, -3.30669397355943583960e-01,
--3.30576568875084519927e-01, -3.30483784898807253505e-01,
--3.30391034451992582355e-01, -3.30298328900163806754e-01,
--3.30205656108088330125e-01, -3.30113030899431780796e-01,
--3.30020428466505866272e-01, -3.29927888512914768704e-01,
--3.29835366438896882002e-01, -3.29742889181185772074e-01,
--3.29650460647833876138e-01, -3.29558060621639892229e-01,
--3.29465699008131440717e-01, -3.29373378754140522240e-01,
--3.29281100518553915268e-01, -3.29188858718991950170e-01,
--3.29096652674345069300e-01, -3.29004490691431061844e-01,
--3.28912362575830508060e-01, -3.28820278446660896332e-01,
--3.28728230373613705684e-01, -3.28636217607063907398e-01,
--3.28544251075820137320e-01, -3.28452310166014393999e-01,
--3.28360421700826687896e-01, -3.28268566056630073380e-01,
--3.28176750201269351592e-01, -3.28084965886991819506e-01,
--3.27993239136963599112e-01, -3.27901518809756153949e-01,
--3.27809871689208831569e-01, -3.27718238243585369140e-01,
--3.27626655705541003361e-01, -3.27535101731415645432e-01,
--3.27443606111453289209e-01, -3.27352116731821241036e-01,
--3.27260700498897660893e-01, -3.27169298363194804846e-01,
--3.27077945505835132600e-01, -3.26986627307041588519e-01,
--3.26895344713058144670e-01, -3.26804108558686245978e-01,
--3.26712896910217709401e-01, -3.26621741964200240638e-01,
--3.26530603923376738784e-01, -3.26439520373260516628e-01,
--3.26348470176022864564e-01, -3.26257455593981449127e-01,
--3.26166488715694480316e-01, -3.26075541276352964815e-01,
--3.25984647191409737665e-01, -3.25893788470829282033e-01,
--3.25802958455817581740e-01, -3.25712179419843927963e-01,
--3.25621435983050988572e-01, -3.25530722687914997326e-01,
--3.25440054392646616055e-01, -3.25349421825410378695e-01,
--3.25258824863596140986e-01, -3.25168273269479446430e-01,
--3.25077750468310389120e-01, -3.24987268293329634172e-01,
--3.24896818338065385134e-01, -3.24806422395165106387e-01,
--3.24716046403993874314e-01, -3.24625715407476533869e-01,
--3.24535430349774611791e-01, -3.24445162411316823103e-01,
--3.24354958871001297638e-01, -3.24264771191515699389e-01,
--3.24174634484502677267e-01, -3.24084523895929232928e-01,
--3.23994459026800851742e-01, -3.23904431030612116604e-01,
--3.23814433340637919390e-01, -3.23724478718542041378e-01,
--3.23634567387877880584e-01, -3.23544685692768452245e-01,
--3.23454843329684382791e-01, -3.23365037520362053058e-01,
--3.23275269681385146736e-01, -3.23185536924682992321e-01,
--3.23095849385954259070e-01, -3.23006191762216565699e-01,
--3.22916570426217852674e-01, -3.22826997541689753035e-01,
--3.22737440432700029014e-01, -3.22647950584020293263e-01,
--3.22558466491205841908e-01, -3.22469048576812467033e-01,
--3.22379650765513003918e-01, -3.22290285177351309986e-01,
--3.22200971759220133883e-01, -3.22111685658731161652e-01,
--3.22022439283318862024e-01, -3.21933230207375298271e-01,
--3.21844055725898692266e-01, -3.21754929084502649950e-01,
--3.21665822357477593219e-01, -3.21576766946822134585e-01,
--3.21487732225476996462e-01, -3.21398764596197317189e-01,
--3.21309798481988706520e-01, -3.21220893325880607616e-01,
--3.21132011043201326395e-01, -3.21043177474382601666e-01,
--3.20954372045852032169e-01, -3.20865606507984679752e-01,
--3.20776876784593933944e-01, -3.20688187430051785398e-01,
--3.20599524303056493402e-01, -3.20510917062701183866e-01,
--3.20422328269140743728e-01, -3.20333788615695058688e-01,
--3.20245279824155071324e-01, -3.20156799610553932656e-01,
--3.20068375388967318873e-01, -3.19979966842285912243e-01,
--3.19891618417902812155e-01, -3.19803282050323323116e-01,
--3.19714993795423230161e-01, -3.19626746902161973374e-01,
--3.19538532318825452272e-01, -3.19450348299827324716e-01,
--3.19362210879227226279e-01, -3.19274102369856094263e-01,
--3.19186032782846962341e-01, -3.19098002112579104406e-01,
--3.19010000370401891612e-01, -3.18922045164797218764e-01,
--3.18834120753971106410e-01, -3.18746227793134551121e-01,
--3.18658379403236935445e-01, -3.18570567148754091313e-01,
--3.18482789299091129109e-01, -3.18395038860409540504e-01,
--3.18307345538659025586e-01, -3.18219664559104442603e-01,
--3.18132033556027371546e-01, -3.18044436174004130358e-01,
--3.17956877848706076506e-01, -3.17869353192871351155e-01,
--3.17781855968134130386e-01, -3.17694416515219568709e-01,
--3.17606986764818577385e-01, -3.17519616894733069934e-01,
--3.17432266021773434872e-01, -3.17344958093929208065e-01,
--3.17257682905915439076e-01, -3.17170457330882504809e-01,
--3.17083246433255361296e-01, -3.16996083675216477893e-01,
--3.16908959550578739339e-01, -3.16821856270166013481e-01,
--3.16734809793386418164e-01, -3.16647783478750832753e-01,
--3.16560798525840403350e-01, -3.16473851481303192212e-01,
--3.16386934958965637676e-01, -3.16300059605132577456e-01,
--3.16213212572499902109e-01, -3.16126412252237365408e-01,
--3.16039642630453532224e-01, -3.15952904668060474691e-01,
--3.15866210535302172069e-01, -3.15779532942031593290e-01,
--3.15692924175109912444e-01, -3.15606314135948418098e-01,
--3.15519774469847580356e-01, -3.15433245156387542796e-01,
--3.15346760521496294327e-01, -3.15260310337106552936e-01,
--3.15173901189560234926e-01, -3.15087516961556401984e-01,
--3.15001170832473698091e-01, -3.14914870905581789629e-01,
--3.14828593940165324394e-01, -3.14742357740590783521e-01,
--3.14656159033590621110e-01, -3.14569993107869316784e-01,
--3.14483859730134152066e-01, -3.14397764544851576751e-01,
--3.14311707559190467443e-01, -3.14225683100008756909e-01,
--3.14139691500964324256e-01, -3.14053737100567498253e-01,
--3.13967824562860597926e-01, -3.13881930893164406982e-01,
--3.13796098702669945535e-01, -3.13710269948259234951e-01,
--3.13624500080762536047e-01, -3.13538759450427528819e-01,
--3.13453044150207804641e-01, -3.13367377106299582756e-01,
--3.13281737576189989181e-01, -3.13196140900250385997e-01,
--3.13110568811249823096e-01, -3.13025034334257767910e-01,
--3.12939548339710438274e-01, -3.12854076672535452719e-01,
--3.12768655675618789669e-01, -3.12683263539456357538e-01,
--3.12597906455694685146e-01, -3.12512581467251693290e-01,
--3.12427294210809725072e-01, -3.12342047448462556414e-01,
--3.12256824495153240129e-01, -3.12171644625531874429e-01,
--3.12086492129538983775e-01, -3.12001388221020192759e-01,
--3.11916308458136226633e-01, -3.11831262339173298503e-01,
--3.11746258664567232888e-01, -3.11661275086031142045e-01,
--3.11576347492792116167e-01, -3.11491444083196455939e-01,
--3.11406566767664649831e-01, -3.11321739706168554296e-01,
--3.11236931403625127768e-01, -3.11152176625169918367e-01,
--3.11067434860568758914e-01, -3.10982743978655606920e-01,
--3.10898082421296351185e-01, -3.10813453848709397853e-01,
--3.10728865178155511106e-01, -3.10644307432114907819e-01,
--3.10559787251664443097e-01, -3.10475287050015869017e-01,
--3.10390848181504308556e-01, -3.10306412222544181212e-01,
--3.10222037402692107921e-01, -3.10137683337757430468e-01,
--3.10053363927979830361e-01, -3.09969086308332530955e-01,
--3.09884830390425081159e-01, -3.09800624689362036346e-01,
--3.09716442288341387012e-01, -3.09632295284240965927e-01,
--3.09548184558093242291e-01, -3.09464116840632463834e-01,
--3.09380064327889392484e-01, -3.09296064449780638839e-01,
--3.09212084697576772285e-01, -3.09128150621053421343e-01,
--3.09044237233321195113e-01, -3.08960374228678003039e-01,
--3.08876534872047248115e-01, -3.08792729354212536208e-01,
--3.08708965998856610380e-01, -3.08625223672207793513e-01,
--3.08541533882186080895e-01, -3.08457858786108374272e-01,
--3.08374228839820352377e-01, -3.08290627117847271244e-01,
--3.08207068514500914791e-01, -3.08123532729750682080e-01,
--3.08040041365923500383e-01, -3.07956573017225843092e-01,
--3.07873147001021363334e-01, -3.07789752157132778798e-01,
--3.07706391457163164205e-01, -3.07623064174878169119e-01,
--3.07539770243611898515e-01, -3.07456510656262227421e-01,
--3.07373281507903273191e-01, -3.07290097425341190984e-01,
--3.07206926158018700512e-01, -3.07123815026133561989e-01,
--3.07040718758160802171e-01, -3.06957659361293877520e-01,
--3.06874638781767350437e-01, -3.06791649579191139097e-01,
--3.06708697217149606207e-01, -3.06625767281695216226e-01,
--3.06542889613291458240e-01, -3.06460026319258171945e-01,
--3.06377209722884624732e-01, -3.06294415478919834772e-01,
--3.06211663941594436356e-01, -3.06128942742720511205e-01,
--3.06046258649077307368e-01, -3.05963596961736250535e-01,
--3.05880987357890266054e-01, -3.05798392882921377112e-01,
--3.05715842271141458042e-01, -3.05633324595146305125e-01,
--3.05550832478499623246e-01, -3.05468384002608395189e-01,
--3.05385958921764844032e-01, -3.05303575433909624159e-01,
--3.05221225696471032407e-01, -3.05138900530053658322e-01,
--3.05056622143069278152e-01, -3.04974355584749501347e-01,
--3.04892151394531185638e-01, -3.04809954124143744902e-01,
--3.04727800916781976781e-01, -3.04645688054904606457e-01,
--3.04563593265481658001e-01, -3.04481542302949492740e-01,
--3.04399521477817680548e-01, -3.04317537441869623294e-01,
--3.04235577277462310164e-01, -3.04153663651642758303e-01,
--3.04071763517348936379e-01, -3.03989919340557523952e-01,
--3.03908083711389997994e-01, -3.03826314396417218600e-01,
--3.03744539497943111250e-01, -3.03662832377988356480e-01,
--3.03581127948359397184e-01, -3.03499479089358148443e-01,
--3.03417851126680404583e-01, -3.03336262822015090279e-01,
--3.03254696154652281237e-01, -3.03173182094001791853e-01,
--3.03091681838359272572e-01, -3.03010230218165088623e-01,
--3.02928793768587167889e-01, -3.02847404463288505383e-01,
--3.02766034927674398958e-01, -3.02684717982977136153e-01,
--3.02603416774087974339e-01, -3.02522156493241933806e-01,
--3.02440917930091424104e-01, -3.02359730382049940456e-01,
--3.02278562925036298203e-01, -3.02197420550994855226e-01,
--3.02116336567971321969e-01, -3.02035262158805495325e-01,
--3.01954225173641788160e-01, -3.01873230084287569319e-01,
--3.01792253505111407463e-01, -3.01711317451606231277e-01,
--3.01630424302656741098e-01, -3.01549542527231539957e-01,
--3.01468706463603908219e-01, -3.01387899696680117145e-01,
--3.01307131196819122376e-01, -3.01226381497679440713e-01,
--3.01145674790784356745e-01, -3.01065000831607143539e-01,
--3.00984354054990355110e-01, -3.00903744614347823383e-01,
--3.00823159812924179057e-01, -3.00742617932585165619e-01,
--3.00662103246106759968e-01, -3.00581615677035562939e-01,
--3.00501171258409083276e-01, -3.00420750638014544265e-01,
--3.00340370488181684916e-01, -3.00260005823546505255e-01,
--3.00179695209751074003e-01, -3.00099398776559167512e-01,
--3.00019148032305449370e-01, -2.99938923869113693854e-01,
--2.99858726506670170142e-01, -2.99778574174106249295e-01,
--2.99698438438693370856e-01, -2.99618347746989255320e-01,
--2.99538283800717064498e-01, -2.99458246642942627069e-01,
--2.99378254399679799569e-01, -2.99298279227290464632e-01,
--2.99218347319087918379e-01, -2.99138448800683021123e-01,
--2.99058574624576745116e-01, -2.98978726151670703981e-01,
--2.98898929337599650324e-01, -2.98819146054147666280e-01,
--2.98739413451577451308e-01, -2.98659688112279053662e-01,
--2.98580017149462251247e-01, -2.98500367286606671513e-01,
--2.98420757461358987506e-01, -2.98341167551394614854e-01,
--2.98261614404881969520e-01, -2.98182095454955109481e-01,
--2.98102604120909442376e-01, -2.98023146940687377882e-01,
--2.97943726694965937973e-01, -2.97864325723094292009e-01,
--2.97784967183515603129e-01, -2.97705643158333255194e-01,
--2.97626339808948758847e-01, -2.97547075704168939581e-01,
--2.97467835110848732860e-01, -2.97388640041019391980e-01,
--2.97309462883185438020e-01, -2.97230325016071161848e-01,
--2.97151213239759015572e-01, -2.97072136623453109117e-01,
--2.96993094441996230426e-01, -2.96914080526812951266e-01,
--2.96835097925620905457e-01, -2.96756140616124208798e-01,
--2.96677229639789485915e-01, -2.96598331556529593023e-01,
--2.96519492030000386684e-01, -2.96440651252633635693e-01,
--2.96361868680595386127e-01, -2.96283100407240262975e-01,
--2.96204373196016779168e-01, -2.96125668603260061573e-01,
--2.96047011288438355336e-01, -2.95968365760827856192e-01,
--2.95889759916888317459e-01, -2.95811184716729846933e-01,
--2.95732648423452593178e-01, -2.95654127024545076985e-01,
--2.95575663603469929175e-01, -2.95497199245855601824e-01,
--2.95418792415274189533e-01, -2.95340402282260605649e-01,
--2.95262044294134995415e-01, -2.95183719842823877322e-01,
--2.95105430265042822935e-01, -2.95027168822003471593e-01,
--2.94948938780401348492e-01, -2.94870733812242991068e-01,
--2.94792575962806668866e-01, -2.94714428082456292302e-01,
--2.94636327317490787081e-01, -2.94558251639318091630e-01,
--2.94480207312523167840e-01, -2.94402191307359006878e-01,
--2.94324209478228515646e-01, -2.94246263789008088985e-01,
--2.94168340529790128812e-01, -2.94090447872844884536e-01,
--2.94012589190740691869e-01, -2.93934765172675471767e-01,
--2.93856969689289537762e-01, -2.93779204217081924000e-01,
--2.93701468979416069338e-01, -2.93623761606339073182e-01,
--2.93546091354298932519e-01, -2.93468445919199183436e-01,
--2.93390842909234894620e-01, -2.93313246547464823166e-01,
--2.93235715278232778047e-01, -2.93158185211556288063e-01,
--2.93080697000828283016e-01, -2.93003241329427011053e-01,
--2.92925814810446050185e-01, -2.92848417956391993133e-01,
--2.92771052104143891803e-01, -2.92693711393679945054e-01,
--2.92616417928207417365e-01, -2.92539133858402689015e-01,
--2.92461899071386643989e-01, -2.92384681274965418929e-01,
--2.92307502695569265683e-01, -2.92230351423153955626e-01,
--2.92153230519724305125e-01, -2.92076139647305721425e-01,
--2.91999077095791370606e-01, -2.91922050043583569678e-01,
--2.91845053838921175693e-01, -2.91768077558705263286e-01,
--2.91691147195350442001e-01, -2.91614236757522626853e-01,
--2.91537357162918120412e-01, -2.91460513083827865710e-01,
--2.91383697265133412291e-01, -2.91306911703275495107e-01,
--2.91230155667610457471e-01, -2.91153430084271469536e-01,
--2.91076731979369673908e-01, -2.91000072322327330010e-01,
--2.90923432561086381387e-01, -2.90846831230972657778e-01,
--2.90770257446225033338e-01, -2.90693713862819946847e-01,
--2.90617200742612991071e-01, -2.90540714382205189636e-01,
--2.90464269333337077317e-01, -2.90387833444186949095e-01,
--2.90311453715076384086e-01, -2.90235086055248836523e-01,
--2.90158748068700511613e-01, -2.90082458133686604818e-01,
--2.90006169836673932672e-01, -2.89929938694830635626e-01,
--2.89853723163468357527e-01, -2.89777544497205108431e-01,
--2.89701381573999106056e-01, -2.89625275275657623197e-01,
--2.89549172603960458527e-01, -2.89473110559530621977e-01,
--2.89397083545063105170e-01, -2.89321076949155042701e-01,
--2.89245110111239545070e-01, -2.89169164988470173139e-01,
--2.89093249709316657547e-01, -2.89017372154488083602e-01,
--2.88941515024419282032e-01, -2.88865694933179373294e-01,
--2.88789907427540515350e-01, -2.88714131354602387969e-01,
--2.88638411075711198706e-01, -2.88562702057091502450e-01,
--2.88487026313789418630e-01, -2.88411385022879718232e-01,
--2.88335773812758988655e-01, -2.88260186641024429566e-01,
--2.88184629697148420036e-01, -2.88109106617386423466e-01,
--2.88033619018986331017e-01, -2.87958134444958546716e-01,
--2.87882714050788857119e-01, -2.87807302133715914305e-01,
--2.87731926238848467747e-01, -2.87656576591996948622e-01,
--2.87581264744810216616e-01, -2.87505976616624470132e-01,
--2.87430712274962751884e-01, -2.87355485530396581595e-01,
--2.87280285776600030623e-01, -2.87205119276563780595e-01,
--2.87129971584651144667e-01, -2.87054871868676564350e-01,
--2.86979784958243722137e-01, -2.86904732960156783061e-01,
--2.86829707321078597460e-01, -2.86754720147553709975e-01,
--2.86679753918483326558e-01, -2.86604821908234108641e-01,
--2.86529910892180106341e-01, -2.86455038142716500449e-01,
--2.86380192498372043719e-01, -2.86305378980894975616e-01,
--2.86230588664763641038e-01, -2.86155829878574685665e-01,
--2.86081100585204695097e-01, -2.86006400604550847788e-01,
--2.85931732694147622276e-01, -2.85857086003960036980e-01,
--2.85782478824851915444e-01, -2.85707893546886637637e-01,
--2.85633337615462501446e-01, -2.85558821210665669810e-01,
--2.85484318518494484263e-01, -2.85409855559644154432e-01,
--2.85335421120561150143e-01, -2.85261011683021981078e-01,
--2.85186630181732847511e-01, -2.85112290747834062898e-01,
--2.85037956273799741869e-01, -2.84963671651626282433e-01,
--2.84889406179563264843e-01, -2.84815170717389598565e-01,
--2.84740974879482466875e-01, -2.84666791700296184509e-01,
--2.84592652372410381822e-01, -2.84518526146278427635e-01,
--2.84444437772280900312e-01, -2.84370386053668045001e-01,
--2.84296351027058247229e-01, -2.84222346687502624984e-01,
--2.84148381721661014154e-01, -2.84074429739585632149e-01,
--2.84000520559181790503e-01, -2.83926628354001953092e-01,
--2.83852781908446982762e-01, -2.83778936614844545794e-01,
--2.83705152712516173175e-01, -2.83631367962298708285e-01,
--2.83557636971072390963e-01, -2.83483915309188483356e-01,
--2.83410236681394867020e-01, -2.83336577753573792826e-01,
--2.83262953453964461126e-01, -2.83189349755469832459e-01,
--2.83115785486497573142e-01, -2.83042244063997028292e-01,
--2.82968728288279902650e-01, -2.82895243541149921107e-01,
--2.82821787846822048085e-01, -2.82748363726633200610e-01,
--2.82674963071020246552e-01, -2.82601593445157617257e-01,
--2.82528255049651622066e-01, -2.82454939516903369423e-01,
--2.82381657764960047885e-01, -2.82308396840973641062e-01,
--2.82235175286546957629e-01, -2.82161976591600693887e-01,
--2.82088803551365452371e-01, -2.82015661494998293168e-01,
--2.81942548662382108660e-01, -2.81869466764828491279e-01,
--2.81796410717207790331e-01, -2.81723376796985280901e-01,
--2.81650384979429901922e-01, -2.81577403789483815544e-01,
--2.81504472096883839871e-01, -2.81431555304708314047e-01,
--2.81358663523939900308e-01, -2.81285813259310846224e-01,
--2.81212973084393191847e-01, -2.81140185144941545659e-01,
--2.81067401691332485747e-01, -2.80994659817595748841e-01,
--2.80921948304203306090e-01, -2.80849252583495911928e-01,
--2.80776597442154440820e-01, -2.80703965356340401360e-01,
--2.80631356931243525210e-01, -2.80558787269943044063e-01,
--2.80486240058415603471e-01, -2.80413720746192474120e-01,
--2.80341223849171372606e-01, -2.80268765854230661461e-01,
--2.80196331001442144881e-01, -2.80123921140157272625e-01,
--2.80051544632897941867e-01, -2.79979188531967460030e-01,
--2.79906873913888409877e-01, -2.79834574123750678964e-01,
--2.79762307649446984037e-01, -2.79690071897800485168e-01,
--2.79617858753625214696e-01, -2.79545680919100536510e-01,
--2.79473518052436586956e-01, -2.79401394115129930729e-01,
--2.79329300658209156438e-01, -2.79257225164321998268e-01,
--2.79185181448365571377e-01, -2.79113171471586540839e-01,
--2.79041173574101741828e-01, -2.78969227730713253965e-01,
--2.78897285109063419739e-01, -2.78825389305071169588e-01,
--2.78753504174386379511e-01, -2.78681663643264965202e-01,
--2.78609835206258815710e-01, -2.78538047903678309680e-01,
--2.78466285134956692549e-01, -2.78394539558566300741e-01,
--2.78322834789442918879e-01, -2.78251150764596166809e-01,
--2.78179499417568476538e-01, -2.78107875428922401984e-01,
--2.78036265791123227142e-01, -2.77964705502005637872e-01,
--2.77893156984732658810e-01, -2.77821646141850175926e-01,
--2.77750151643495701848e-01, -2.77678688203089274467e-01,
--2.77607263000297366240e-01, -2.77535854954775007553e-01,
--2.77464474153011120272e-01, -2.77393123681135944647e-01,
--2.77321803459881777165e-01, -2.77250510720189358160e-01,
--2.77179234265821305971e-01, -2.77107999299044949204e-01,
--2.77036783262253505367e-01, -2.76965606480123249789e-01,
--2.76894432563297876460e-01, -2.76823319689300406665e-01,
--2.76752205647846361014e-01, -2.76681124640357545275e-01,
--2.76610091478398878451e-01, -2.76539057417772293768e-01,
--2.76468068513254561225e-01, -2.76397101048645399413e-01,
--2.76326159130485415893e-01, -2.76255250048812850405e-01,
--2.76184362888675982717e-01, -2.76113511668101052621e-01,
--2.76042673581677333594e-01, -2.75971881129537299771e-01,
--2.75901094171787597542e-01, -2.75830351360901726565e-01,
--2.75759627633846315931e-01, -2.75688939886797879097e-01,
--2.75618267949825468399e-01, -2.75547630902992390922e-01,
--2.75477017299460613664e-01, -2.75406431494776671176e-01,
--2.75335867513592791322e-01, -2.75265344901753472584e-01,
--2.75194836154711519605e-01, -2.75124364689586453636e-01,
--2.75053909045930800037e-01, -2.74983486944931576623e-01,
--2.74913093665771546270e-01, -2.74842730370532195572e-01,
--2.74772374779963690639e-01, -2.74702070145500243381e-01,
--2.74631777499363627371e-01, -2.74561520054265151281e-01,
--2.74491288630621499411e-01, -2.74421074382313445739e-01,
--2.74350899521658420088e-01, -2.74280751100732245185e-01,
--2.74210613995430008138e-01, -2.74140516946612011751e-01,
--2.74070449521909065282e-01, -2.74000402358196282204e-01,
--2.73930378636858429253e-01, -2.73860397347223338826e-01,
--2.73790424054078607163e-01, -2.73720488101978187689e-01,
--2.73650573603144597890e-01, -2.73580692412392134649e-01,
--2.73510835349982106557e-01, -2.73441004928314412847e-01,
--2.73371200277527037770e-01, -2.73301422364668755716e-01,
--2.73231668191406429358e-01, -2.73161948784023778103e-01,
--2.73092245387460519357e-01, -2.73022577292190926634e-01,
--2.72952930794861547970e-01, -2.72883319066670071429e-01,
--2.72813725477921487084e-01, -2.72744158672713621350e-01,
--2.72674623056092968465e-01, -2.72605114715516849699e-01,
--2.72535622544367805986e-01, -2.72466172529916839107e-01,
--2.72396738884922551271e-01, -2.72327331715854548122e-01,
--2.72257958735816929519e-01, -2.72188601337665814217e-01,
--2.72119281533388934768e-01, -2.72049974585663156823e-01,
--2.71980712728309426129e-01, -2.71911458818592688402e-01,
--2.71842239786664607859e-01, -2.71773052109879453830e-01,
--2.71703882948668151709e-01, -2.71634742480469149051e-01,
--2.71565625186839798566e-01, -2.71496542964112241858e-01,
--2.71427476097141573419e-01, -2.71358446846692968890e-01,
--2.71289430588333102534e-01, -2.71220458855547019716e-01,
--2.71151497194053625606e-01, -2.71082562480524313919e-01,
--2.71013666366038519229e-01, -2.70944790073090580051e-01,
--2.70875930005398501965e-01, -2.70807119325596090675e-01,
--2.70738318386396559223e-01, -2.70669540855605239571e-01,
--2.70600794061028715465e-01, -2.70532079727119401102e-01,
--2.70463383628260722880e-01, -2.70394716238982646406e-01,
--2.70326072238524450775e-01, -2.70257462435398387868e-01,
--2.70188871268058794506e-01, -2.70120305470691102201e-01,
--2.70051776019842759702e-01, -2.69983254626878887983e-01,
--2.69914776414566681684e-01, -2.69846318587439903958e-01,
--2.69777892501111837831e-01, -2.69709475528596143157e-01,
--2.69641102118741149418e-01, -2.69572746510107319473e-01,
--2.69504410244378711514e-01, -2.69436112916259018490e-01,
--2.69367841660474394150e-01, -2.69299583639932893497e-01,
--2.69231358364793171845e-01, -2.69163167686737425655e-01,
--2.69094984688878380297e-01, -2.69026848131857065916e-01,
--2.68958719296964632317e-01, -2.68890624891427842957e-01,
--2.68822563860274088565e-01, -2.68754513716166654191e-01,
--2.68686498408199803123e-01, -2.68618511682558958054e-01,
--2.68550532253665763527e-01, -2.68482606814164914688e-01,
--2.68414681637764829247e-01, -2.68346790826536729657e-01,
--2.68278941105454360461e-01, -2.68211093824292923227e-01,
--2.68143285100269301857e-01, -2.68075498521707644706e-01,
--2.68007741266353127774e-01, -2.67940001034900732169e-01,
--2.67872297495083122598e-01, -2.67804608978758684756e-01,
--2.67736957787277685128e-01, -2.67669321086863643000e-01,
--2.67601723207789465864e-01, -2.67534134366222919876e-01,
--2.67466582311995049182e-01, -2.67399052884839394384e-01,
--2.67331552624248569572e-01, -2.67264069532518910854e-01,
--2.67196622709230169335e-01, -2.67129192457251085635e-01,
--2.67061793762043198086e-01, -2.66994408730633570048e-01,
--2.66927071597710174888e-01, -2.66859730372719650138e-01,
--2.66792447024478796003e-01, -2.66725159778724463244e-01,
--2.66657919653241259894e-01, -2.66590696109862967944e-01,
--2.66523493228245089703e-01, -2.66456325227931167809e-01,
--2.66389175854575221969e-01, -2.66322051202534382242e-01,
--2.66254965500467566386e-01, -2.66187878091123653057e-01,
--2.66120847967881601903e-01, -2.66053813924927218260e-01,
--2.65986827681687298952e-01, -2.65919855324977860711e-01,
--2.65852913732882611964e-01, -2.65785991657992881620e-01,
--2.65719094860117854839e-01, -2.65652233899170586717e-01,
--2.65585383127432239636e-01, -2.65518567520639292567e-01,
--2.65451779878790095069e-01, -2.65385001674412923656e-01,
--2.65318269513913018720e-01, -2.65251544906108194244e-01,
--2.65184855802354790821e-01, -2.65118195943634726852e-01,
--2.65051540062922641461e-01, -2.64984928432112298857e-01,
--2.64918336989363401024e-01, -2.64851777006659072633e-01,
--2.64785227457907834658e-01, -2.64718716472008730456e-01,
--2.64652219614681993853e-01, -2.64585761790664397708e-01,
--2.64519312518772475862e-01, -2.64452901763777392663e-01,
--2.64386507203004050837e-01, -2.64320143458897371946e-01,
--2.64253796716094724317e-01, -2.64187485261860310892e-01,
--2.64121194465983144539e-01, -2.64054919858559333790e-01,
--2.63988693949415653695e-01, -2.63922458224374323343e-01,
--2.63856280119868835676e-01, -2.63790104866535146666e-01,
--2.63723972346687929313e-01, -2.63657844855657130800e-01,
--2.63591766274582917085e-01, -2.63525688190542506373e-01,
--2.63459648615377350911e-01, -2.63393633321611475573e-01,
--2.63327638855565759890e-01, -2.63261670907691203158e-01,
--2.63195732521604275345e-01, -2.63129805832387764220e-01,
--2.63063914552611355369e-01, -2.62998048752138335882e-01,
--2.62932202087204025531e-01, -2.62866387511262566967e-01,
--2.62800581906003083432e-01, -2.62734820087732301452e-01,
--2.62669075316500522099e-01, -2.62603352680575163891e-01,
--2.62537658566835474527e-01, -2.62471984691239335064e-01,
--2.62406335451333905251e-01, -2.62340723892714733356e-01,
--2.62275115787194479378e-01, -2.62209545594959014814e-01,
--2.62143999110420133913e-01, -2.62078476344002386789e-01,
--2.62012969107854654105e-01, -2.61947510142956141443e-01,
--2.61882043728466684662e-01, -2.61816625896317489719e-01,
--2.61751222350074252976e-01, -2.61685847188317666223e-01,
--2.61620500664901001198e-01, -2.61555167665830534673e-01,
--2.61489863689744250763e-01, -2.61424586559567295740e-01,
--2.61359329484961766532e-01, -2.61294099452612282874e-01,
--2.61228897657859171488e-01, -2.61163712332657116377e-01,
--2.61098567002105375057e-01, -2.61033424037335481938e-01,
--2.60968321021755156330e-01, -2.60903234657569038646e-01,
--2.60838175849067432921e-01, -2.60773146628625773769e-01,
--2.60708127962452462789e-01, -2.60643149249854877425e-01,
--2.60578178982620423110e-01, -2.60513246739066617330e-01,
--2.60448332769361301509e-01, -2.60383441791032177459e-01,
--2.60318574683800485481e-01, -2.60253745562995741913e-01,
--2.60188919439319599203e-01, -2.60124132747669434274e-01,
--2.60059364144720972511e-01, -2.59994617865390797995e-01,
--2.59929898313336460447e-01, -2.59865205990752967669e-01,
--2.59800534485202572199e-01, -2.59735886592499798375e-01,
--2.59671257541824240800e-01, -2.59606663620642774681e-01,
--2.59542089153392552259e-01, -2.59477535851373675158e-01,
--2.59413012544949028726e-01, -2.59348504553108316628e-01,
--2.59284039417788769732e-01, -2.59219566355734731822e-01,
--2.59155149199322865083e-01, -2.59090739864494823408e-01,
--2.59026355096398042122e-01, -2.58961998350243305378e-01,
--2.58897661411781720986e-01, -2.58833351331056227274e-01,
--2.58769070473885531847e-01, -2.58704802326952476577e-01,
--2.58640565874222572162e-01, -2.58576346396635348146e-01,
--2.58512161434724663245e-01, -2.58448000248899634190e-01,
--2.58383843553506298285e-01, -2.58319734527267641511e-01,
--2.58255631499654580985e-01, -2.58191568567093354680e-01,
--2.58127518069633854481e-01, -2.58063489495424180920e-01,
--2.57999494903564385861e-01, -2.57935521272989909392e-01,
--2.57871563925374303050e-01, -2.57807632243347462087e-01,
--2.57743738078198836305e-01, -2.57679846993883299167e-01,
--2.57615995476324077806e-01, -2.57552161424840830861e-01,
--2.57488352052748226129e-01, -2.57424560607467600715e-01,
--2.57360806885999326976e-01, -2.57297063156403882367e-01,
--2.57233353494213945467e-01, -2.57169654032721739512e-01,
--2.57105991459742000416e-01, -2.57042349945948600531e-01,
--2.56978721417348343614e-01, -2.56915131647498573564e-01,
--2.56851552671387484139e-01, -2.56788003520280194714e-01,
--2.56724480737611615577e-01, -2.56660979118377152730e-01,
--2.56597500587418092532e-01, -2.56534042650374050076e-01,
--2.56470613359845278634e-01, -2.56407205351532829773e-01,
--2.56343817678290730733e-01, -2.56280461493001709972e-01,
--2.56217115483022284117e-01, -2.56153809042560520748e-01,
--2.56090512962653060747e-01, -2.56027247629719512112e-01,
--2.55964005410528327999e-01, -2.55900774099844519061e-01,
--2.55837587800097965296e-01, -2.55774411713771132604e-01,
--2.55711261521537225327e-01, -2.55648131649962473411e-01,
--2.55585028712108974780e-01, -2.55521954180903843046e-01,
--2.55458895551576692373e-01, -2.55395856666797982371e-01,
--2.55332857012398051211e-01, -2.55269859505869389782e-01,
--2.55206903584443867139e-01, -2.55143957988668623749e-01,
--2.55081041263898300464e-01, -2.55018155191650386371e-01,
--2.54955274100500506318e-01, -2.54892431839403521554e-01,
--2.54829608090931025721e-01, -2.54766805572358312482e-01,
--2.54704033732013002123e-01, -2.54641274411050722026e-01,
--2.54578546093037649811e-01, -2.54515837706037417743e-01,
--2.54453152702487472858e-01, -2.54390488344574172697e-01,
--2.54327852131114695577e-01, -2.54265239156395761455e-01,
--2.54202639192711965510e-01, -2.54140075704855583627e-01,
--2.54077532116588844513e-01, -2.54015006564586975912e-01,
--2.53952500726644714302e-01, -2.53890032106650342936e-01,
--2.53827573714738630173e-01, -2.53765148951257568655e-01,
--2.53702735908163778955e-01, -2.53640354113799260105e-01,
--2.53577992066322810416e-01, -2.53515653893015502351e-01,
--2.53453334586594525302e-01, -2.53391050048909827197e-01,
--2.53328764031586106675e-01, -2.53266538571049248940e-01,
--2.53204295880422258769e-01, -2.53142106256852073010e-01,
--2.53079922760821030003e-01, -2.53017773446285620942e-01,
--2.52955637740421068749e-01, -2.52893525177086520017e-01,
--2.52831440545411512133e-01, -2.52769377506761316887e-01,
--2.52707334274802852825e-01, -2.52645324333503284997e-01,
--2.52583317885069102982e-01, -2.52521353581481644568e-01,
--2.52459396019576121084e-01, -2.52397481104805143648e-01,
--2.52335567673748484285e-01, -2.52273695067666836600e-01,
--2.52211836491905649904e-01, -2.52149992728596172853e-01,
--2.52088187443868294579e-01, -2.52026392246296748745e-01,
--2.51964629980227339257e-01, -2.51902882363185642856e-01,
--2.51841154977239800594e-01, -2.51779466128333406783e-01,
--2.51717781714107968760e-01, -2.51656130431086255683e-01,
--2.51594498650761222436e-01, -2.51532889838896656087e-01,
--2.51471303760944120409e-01, -2.51409737889333739780e-01,
--2.51348202568893563935e-01, -2.51286681299622782770e-01,
--2.51225185033213394004e-01, -2.51163708814639563549e-01,
--2.51102261512313018610e-01, -2.51040834959354253186e-01,
--2.50979430603127828814e-01, -2.50918050821055227395e-01,
--2.50856684656085349161e-01, -2.50795351207259931137e-01,
--2.50734029738946484489e-01, -2.50672739391149534960e-01,
--2.50611469042967272003e-01, -2.50550221686260676801e-01,
--2.50488996474487024546e-01, -2.50427793801956899422e-01,
--2.50366612937970467456e-01, -2.50305456411016258311e-01,
--2.50244314837840708954e-01, -2.50183200871226807394e-01,
--2.50122117986780634347e-01, -2.50061039629294101783e-01,
--2.50000001488768275326e-01
-};

+ 4 - 0
include/pocketpy/common/dmath.h

@@ -9,6 +9,10 @@
 #define DMATH_EPSILON 1e-10
 #define DMATH_LOG2_E 1.4426950408889634
 
+// Fixed OpenLibm binary64 kernels. Require round-to-nearest-even, gradual
+// underflow (FTZ/DAZ disabled), and no fast-math or excess intermediate precision.
+// These return IEEE values (including canonical quiet NaN 0x7ff8000000000000);
+// Python exceptions belong to the bindings. See third-party/openlibm/README.md.
 double dmath_exp2(double x);
 double dmath_log2(double x);
 

+ 3 - 3
scripts/gen_docs.py

@@ -19,9 +19,9 @@ class Function:
     def badges(self):
         res = []
         if self.is_py_raise:
-            res.append('[!badge text="raise" variant="danger"](../introduction/#py_raise-macro)')
+            res.append('[!badge text="raise" variant="danger"](introduction.md#py_raise-macro)')
         if self.is_py_return:
-            res.append('[!badge text="return"](../introduction/#py_return-macro)')
+            res.append('[!badge text="return"](introduction.md#py_return-macro)')
         return ' '.join(res)
 
     def markdown(self):
@@ -65,4 +65,4 @@ with open('docs/C-API/functions.md', 'w', newline='\n') as f:
     ]))
     for function in functions:
         f.write(function.markdown())
-        f.write('\n\n')
+        f.write('\n\n')

+ 21 - 7
src/bindings/py_number.c

@@ -104,21 +104,35 @@ static bool number__pow__(int argc, py_Ref argv) {
                 py_newfloat(py_retval(), dmath_pow(lhs, rhs));
             }
         } else {
-            // rhs >= 0
-            py_i64 ret = 1;
+            // Fixed-width integer powers must not invoke signed-overflow UB.
+            // Keep the exact integer result when representable, including INT64_MIN.
+            bool negative = lhs < 0 && (rhs & 1);
+            uint64_t limit = negative ? UINT64_C(0x8000000000000000) : INT64_MAX;
+            uint64_t base = lhs < 0 ? 0 - (uint64_t)lhs : (uint64_t)lhs;
+            uint64_t ret = 1;
             while(true) {
-                if(rhs & 1) ret *= lhs;
+                if(rhs & 1) {
+                    if(base && ret > limit / base) return OverflowError("integer power overflow");
+                    ret *= base;
+                }
                 rhs >>= 1;
                 if(!rhs) break;
-                lhs *= lhs;  // place this here to avoid overflow
+                if(base && base > limit / base) return OverflowError("integer power overflow");
+                base *= base;
             }
-            py_newint(py_retval(), ret);
+            py_i64 result = negative && ret ? -(py_i64)(ret - 1) - 1 : (py_i64)ret;
+            py_newint(py_retval(), result);
         }
     } else {
         py_f64 lhs, rhs;
         if(!py_castfloat(&argv[0], &lhs)) return false;
         if(try_castfloat(&argv[1], &rhs)) {
-            py_newfloat(py_retval(), dmath_pow(lhs, rhs));
+            if(lhs == 0 && rhs < 0 && dmath_isfinite(rhs))
+                return ZeroDivisionError("0.0 cannot be raised to a negative power");
+            double result = dmath_pow(lhs, rhs);
+            if(dmath_isinf(result) && dmath_isfinite(lhs) && dmath_isfinite(rhs))
+                return OverflowError("numerical result out of range");
+            py_newfloat(py_retval(), result);
         } else {
             py_newnotimplemented(py_retval());
         }
@@ -714,4 +728,4 @@ void pk_number__register() {
 
 #undef DEF_NUM_BINARY_OP
 #undef DEF_INT_BITWISE_OP
-#undef DEF_BOOL_BITWISE
+#undef DEF_BOOL_BITWISE