{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":507677414,"defaultBranch":"master","name":"Arraymancer","ownerLogin":"AngelEzquerra","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2022-06-26T20:27:20.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/6682868?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1718649338.0","currentOid":""},"activityList":{"items":[{"before":null,"after":"639a13cb3436f35d3f238571824f15bce0b2efea","ref":"refs/heads/ismember_improvements","pushedAt":"2024-06-17T18:35:38.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"},"commit":{"message":"Make the output of `ismember` have the same shape as its first input\n\nAlso add documentation for the `ismember` function.","shortMessageHtmlLink":"Make the output of ismember have the same shape as its first input"}},{"before":"00970d012875e333ba13a3dc70192494784374a3","after":"78647a4e621ff874f4de47c98370a9c3b7e8eb92","ref":"refs/heads/format_strings","pushedAt":"2024-06-17T18:33:59.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"},"commit":{"message":"Add \"format string\" support for tensors\n\nThis comes in 2 forms:\n1. Add a version of the pretty function that takes a format string as its input instead of a precision value. Also add a new \"showHeader\" argument to the original pretty function.\n - This new version of pretty let's you specify the format string that must be used to display each element. It also adds some new tensor-specific format string \"tokens\" that are used to control how tensors are displayed (beyond the format of each element).\n2. Add a formatValue procedure that takes a tensor as its first input. This makes it possible to control how tensors are displayed in format strings, in the exact same way as if you were using the new pretty(specifier) procedure.\n\nThe special, tensor-specific tokens added by this change are:\n- \"[:]\": Display the tensor as if it were a nim \"array\".\n This makes it easy to use the representation of a\n tensor in your own code. No header is shown.\n- \"[]\": Same as \"[:]\" but displays the tensor in a single\n line. No header is shown.\n- \"<>\": Combined with the 2 above (i.e. \"<>[:]\" or \"<>[]\")\n adds a header with basic tensor info (type and\n shape). \"<:>\" can be used as a shortcut for \"<>[:]\"\n while \"<>\" on its own is equivalent to \"<>[]\".\n Can also be combined with \"<>||\" (see below).\n- \"||\": \"Pretty-print\" the tensor without a header. This\n can also be combined with \"<>\" (i.e. \"<>||\") to\n explicitly enable the default mode, which is pretty\n printing with a header.\n- 'j': Formats complex values as (A+Bj) like in mathematics.\n Ignored for non Complex tensors\n\nNote that these are only used to control how the tensors themselves are displayed as a whole, and are removed before displaying the individual elements.","shortMessageHtmlLink":"Add \"format string\" support for tensors"}},{"before":"dcc9546fc791584ed4317be1aeef68d9248c4d6c","after":"c95e1c78048a02eda9ac8ad7bb2dd189dbdc1902","ref":"refs/heads/master","pushedAt":"2024-06-17T18:32:52.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"},"commit":{"message":"update changelog, push v0.7.32","shortMessageHtmlLink":"update changelog, push v0.7.32"}},{"before":null,"after":"00970d012875e333ba13a3dc70192494784374a3","ref":"refs/heads/format_strings","pushedAt":"2024-06-04T21:59:38.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"},"commit":{"message":"Add \"format string\" support for tensors\n\nThis comes in 2 forms:\n1. Add a version of the pretty function that takes a format string as its input instead of a precision value. Also add a new \"showHeader\" argument to the original pretty function.\n - This new version of pretty let's you specify the format string that must be used to display each element. It also adds some new tensor-specific format string \"tokens\" that are used to control how tensors are displayed (beyond the format of each element).\n2. Add a formatValue procedure that takes a tensor as its first input. This makes it possible to control how tensors are displayed in format strings, in the exact same way as if you were using the new pretty(specifier) procedure.\n\nThe special, tensor-specific tokens added by this change are:\n- \"[:]\": Display the tensor as if it were a nim \"array\".\n This makes it easy to use the representation of a\n tensor in your own code. No header is shown.\n- \"[]\": Same as \"[:]\" but displays the tensor in a single\n line. No header is shown.\n- \"<>\": Combined with the 2 above (i.e. \"<>[:]\" or \"<>[]\")\n adds a header with basic tensor info (type and\n shape). \"<:>\" can be used as a shortcut for \"<>[:]\"\n while \"<>\" on its own is equivalent to \"<>[]\".\n Can also be combined with \"<>||\" (see below).\n- \"||\": \"Pretty-print\" the tensor without a header. This\n can also be combined with \"<>\" (i.e. \"<>||\") to\n explicitly enable the default mode, which is pretty\n printing with a header.\n- 'j': Formats complex values as (A+Bj) like in mathematics.\n Ignored for non Complex tensors\n\nNote that these are only used to control how the tensors themselves are displayed as a whole, and are removed before displaying the individual elements.","shortMessageHtmlLink":"Add \"format string\" support for tensors"}},{"before":"a166a0b4cdc50a54260b1f440ef8691d3c807c92","after":null,"ref":"refs/heads/Improve_fix_for_issue_637","pushedAt":"2024-05-31T19:16:28.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"}},{"before":null,"after":"a166a0b4cdc50a54260b1f440ef8691d3c807c92","ref":"refs/heads/_merged/Improve_fix_for_issue_637","pushedAt":"2024-05-31T19:16:27.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"},"commit":{"message":"Improve the docs of `append` (use a code block for the examples)","shortMessageHtmlLink":"Improve the docs of append (use a code block for the examples)"}},{"before":"ba9dd187ebdfe24cd667508f263e4b4d9144c30b","after":"dcc9546fc791584ed4317be1aeef68d9248c4d6c","ref":"refs/heads/master","pushedAt":"2024-05-29T15:36:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"},"commit":{"message":"Improve fix for issue 637 (#654)\n\n* Improve fix for issue #637 (https://github.com/mratsim/Arraymancer/issues/637)\r\n\r\nThe previous fix was incomplete. We could still assert if the input was an empty _tensor_.\r\n\r\nThis change also improves the handling of empty, rank-0 tensors. Up until now we would assert with the wrong message (talking about higher than rank-1 tensors not being supported). Now we don't assert and the code does the right thing.\r\n\r\n* Improve the docs of `append` (use a code block for the examples)","shortMessageHtmlLink":"Improve fix for issue 637 (mratsim#654)"}},{"before":"ce971667b66133c0cd62b869569ed302d991fc3e","after":"ba9dd187ebdfe24cd667508f263e4b4d9144c30b","ref":"refs/heads/master","pushedAt":"2024-05-28T20:30:40.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"},"commit":{"message":"update changelog, push v0.7.31","shortMessageHtmlLink":"update changelog, push v0.7.31"}},{"before":"794f16ba7d0843aa3b3cdf992e45651d3e12367c","after":"a166a0b4cdc50a54260b1f440ef8691d3c807c92","ref":"refs/heads/Improve_fix_for_issue_637","pushedAt":"2024-05-28T20:29:28.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"},"commit":{"message":"Improve the docs of `append` (use a code block for the examples)","shortMessageHtmlLink":"Improve the docs of append (use a code block for the examples)"}},{"before":null,"after":"794f16ba7d0843aa3b3cdf992e45651d3e12367c","ref":"refs/heads/Improve_fix_for_issue_637","pushedAt":"2024-05-28T20:26:52.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"},"commit":{"message":"Improve the docs of `append` (use a code block for the examples)","shortMessageHtmlLink":"Improve the docs of append (use a code block for the examples)"}},{"before":"13af280c06da92f2cd773c8bdf2f1691ec6bbd66","after":"ce971667b66133c0cd62b869569ed302d991fc3e","ref":"refs/heads/master","pushedAt":"2024-05-26T11:52:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"},"commit":{"message":"update changelog, push v0.7.30\n\nAlso updates the wrong dates of the previous 2 tags :)","shortMessageHtmlLink":"update changelog, push v0.7.30"}},{"before":"534ea98c1ddd2012b276b6c6b6215b3f6e183df9","after":"13af280c06da92f2cd773c8bdf2f1691ec6bbd66","ref":"refs/heads/master","pushedAt":"2024-05-23T09:09:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"},"commit":{"message":"Improve the performance of convolve (and correlate) (#650)\n\n* Improve the performance of convolve (and correlate)\r\n\r\nThe exising implementation of `convolve` (which is also used for `correlate`) was pretty slow. The slowness was due to the fact that we were using regular tensor element access in the inner loop of the convolution, which was very expensive.\r\n\r\nThe solution was to ensure that the input tensors were contiguous (by cloning them if necessary) and then using `unsafe_raw_buf` for all the tensor element accesses, which is safe because we know that the indexes are all within the tensor boundaries.\r\n\r\nOn my system this change makes a large convolution go from ~1.5 seconds in release mode and ~0.25 seconds in danger mode down to ~65 usecs in both modes (i.e. a x23 reduction in release mode and a x3.8 reduction in danger mode)!\r\n\r\n* Fix small typo in `gemm_strided` comment\r\n\r\n* Further improvements to the convolution / correlation speed by using GEMM\r\n\r\nChange the algorithm used to calculate the convolution and the correlation to one based on using the \"gemm\" blas operation. This is around 3 times faster than the previous \"fast\" algorithm for float and complex input tensors. For integer tensors this new algorithm is as fast as the previous algorithm. The reason it is not faster is that for integers we do not use BLAS' gemm function.\r\n\r\nBy using this new algorithm we were also able to add support for a new `down` argument for the `convolute` and `correlate` procedures. This will be useful to implement an efficient `upfirdn` function in the future.\r\n\r\nThis commit also adds many new tests for the `convolute` and `correlate` procedures. These are needed because to use the gemm based algorithm must handle differently the case in which the first input tensor is shorter than the second input tensor. Another set of tests are added because handling the different convolution / correlation modes using gemm is a bit tricky.\r\n\r\nThanks to @mratsim for the suggestion, and specially to @Vindaar for reviewing these changes and fixing multiple issues.\r\n\r\n* Add an upsample procedure\r\n\r\nThis basic procedure which is missing from Matlab complements the `down` argument of `convolve` and `correlate` (as well as the slicing syntax which can be used to downsample a tensor).","shortMessageHtmlLink":"Improve the performance of convolve (and correlate) (mratsim#650)"}},{"before":null,"after":"d7293112a03875da80dbf3a0612edc849ec0a874","ref":"refs/heads/_merged/faster_convolve","pushedAt":"2024-05-23T09:08:54.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"},"commit":{"message":"Add an upsample procedure\n\nThis basic procedure which is missing from Matlab complements the `down` argument of `convolve` and `correlate` (as well as the slicing syntax which can be used to downsample a tensor).","shortMessageHtmlLink":"Add an upsample procedure"}},{"before":"d7293112a03875da80dbf3a0612edc849ec0a874","after":null,"ref":"refs/heads/faster_convolve","pushedAt":"2024-05-23T09:08:43.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"}},{"before":"bcc12977541d88d770b0569584cd8a6fdb2ba6b1","after":"d7293112a03875da80dbf3a0612edc849ec0a874","ref":"refs/heads/faster_convolve","pushedAt":"2024-05-23T08:31:36.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"},"commit":{"message":"Add an upsample procedure\n\nThis basic procedure which is missing from Matlab complements the `down` argument of `convolve` and `correlate` (as well as the slicing syntax which can be used to downsample a tensor).","shortMessageHtmlLink":"Add an upsample procedure"}},{"before":"039b01bfaf19df224f317ac7f7ef8b85705711f3","after":null,"ref":"refs/heads/toTensor_with_target_type","pushedAt":"2024-05-23T08:20:16.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"}},{"before":null,"after":"039b01bfaf19df224f317ac7f7ef8b85705711f3","ref":"refs/heads/_merged/toTensor_with_target_type","pushedAt":"2024-05-23T08:19:59.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"},"commit":{"message":"Add versions of `toTensor` that take a type as their second argument\n\nThese are convenience functions which are equivalent to calling the regular `toTensor` followed by `asType`. This makes code that uses this relatively common idiom less verbose.","shortMessageHtmlLink":"Add versions of toTensor that take a type as their second argument"}},{"before":"2c4f2cd5dfd0d9c2eec10c6de9f6075d48ec5627","after":"534ea98c1ddd2012b276b6c6b6215b3f6e183df9","ref":"refs/heads/master","pushedAt":"2024-05-23T08:19:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"},"commit":{"message":"Add versions of `toTensor` that take a type as their second argument (#652)\n\nThese are convenience functions which are equivalent to calling the regular `toTensor` followed by `asType`. This makes code that uses this relatively common idiom less verbose.","shortMessageHtmlLink":"Add versions of toTensor that take a type as their second argument (m…"}},{"before":null,"after":"039b01bfaf19df224f317ac7f7ef8b85705711f3","ref":"refs/heads/toTensor_with_target_type","pushedAt":"2024-05-16T20:56:15.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"},"commit":{"message":"Add versions of `toTensor` that take a type as their second argument\n\nThese are convenience functions which are equivalent to calling the regular `toTensor` followed by `asType`. This makes code that uses this relatively common idiom less verbose.","shortMessageHtmlLink":"Add versions of toTensor that take a type as their second argument"}},{"before":"b9109f5569160a6b5732fde353181d89410f73d7","after":"bcc12977541d88d770b0569584cd8a6fdb2ba6b1","ref":"refs/heads/faster_convolve","pushedAt":"2024-05-16T20:11:47.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"},"commit":{"message":"Add an upsample procedure\n\nThis basic procedure which is missing from Matlab complements the `down` argument of `convolve` and `correlate` (as well as the slicing syntax which can be used to downsample a tensor).","shortMessageHtmlLink":"Add an upsample procedure"}},{"before":"f33e92e25dbf492591133f8a47d108de07526d58","after":"b9109f5569160a6b5732fde353181d89410f73d7","ref":"refs/heads/faster_convolve","pushedAt":"2024-05-12T21:12:57.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"},"commit":{"message":"Fix small typo in `gemm_strided` comment","shortMessageHtmlLink":"Fix small typo in gemm_strided comment"}},{"before":"b2027098cf2c1c06ad859b24b564340a4cc4d04f","after":"2c4f2cd5dfd0d9c2eec10c6de9f6075d48ec5627","ref":"refs/heads/master","pushedAt":"2024-05-12T18:30:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"},"commit":{"message":"More missing numpy and matlab (#649)\n\n* Add a `union` procedure\r\n\r\n`union` returns the unique, unsorted Tensor of values that are found in either of the two input Tensors.\r\n\r\nNote that an equivalent function exists both in `numpy` (where it is called `union1d`) and in `Matlab` (where it is called `union1d`). However, those functions always sort the output, while Arraymancer's version does not. To replicate the same behavior, simply apply `sort` to the output of this function.\r\n\r\n* Add a version of `toTensor` that takes SomeSet as its input\r\n\r\nThis will let us avoid having to convert HashSets into seqs before converting them into tensors.\r\n\r\nNote that this also improves a little the docstrings of a couple of the existing `toTensor` procedures.\r\n\r\n* Add an `intersection` procedure\r\n\r\n`intersection` returns the \"intersection\" of 2 Tensors as an unsorted rank-1 Tensor.\r\n\r\nNote that an equivalent function exists both in `numpy` (where it is called `intersect1d`) and in `Matlab` (where it is called `intersect`). However, those functions always sort the output, while Arraymancer's version does not. To replicate the same behavior, simply apply `sort` to the output of this function.\r\n\r\nAlso note that to implement this feature we moved (and made public) the existing, private toHashSet procedure from spatial/distances.nim into tensor/initialization.nim.\r\n\r\n* Add a `setDiff` procedure\r\n\r\n`setDiff` returns the (symmetric or non symmetric) \"difference\" between 2 Tensors as an unsorted rank-1 Tensor.\r\n\r\nNote that an equivalent function exists both in `numpy` (where it is called `setdiff1d`) and in `Matlab` (where it is called `setdiff`). However, those functions always sort the output, while Arraymancer's version does not. To replicate the same behavior, simply apply `sort` to the output of this function.\r\n\r\n* Add a `contains` function (and thus add support for `in` and `notin`)\r\n\r\n`find` (which is used to implement `contains`) was already supported (since `system.find` is generic and works with Tensors) but was untested, so this also adds a test for it.\r\n\r\n* Add support for `almostEqual`\r\n\r\nThis was a useful std/math function that we did not support yet.\r\n\r\n* Update src/arraymancer/laser/tensor/initialization.nim\r\n\r\nFix typo in export comment & add alternative for reader\r\n\r\n---------\r\n\r\nCo-authored-by: Vindaar ","shortMessageHtmlLink":"More missing numpy and matlab (mratsim#649)"}},{"before":"2c7752bebfff02f5a9f451bc7daa99bf21b48063","after":"7a478b60a6fa802adaeab9996dbfe8cce8f5b951","ref":"refs/heads/more_missing_numpy_and_matlab","pushedAt":"2024-05-12T13:29:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Vindaar","name":"Sebastian","path":"/Vindaar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7742232?s=80&v=4"},"commit":{"message":"Update src/arraymancer/laser/tensor/initialization.nim\r\n\r\nFix typo in export comment & add alternative for reader","shortMessageHtmlLink":"Update src/arraymancer/laser/tensor/initialization.nim"}},{"before":"ab284a935cd1a2a62cedfcc4fb694f3ee9da12d1","after":"f33e92e25dbf492591133f8a47d108de07526d58","ref":"refs/heads/faster_convolve","pushedAt":"2024-05-12T10:30:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"},"commit":{"message":"Fix small typo in `gemm_strided` comment","shortMessageHtmlLink":"Fix small typo in gemm_strided comment"}},{"before":"847481154ff84098fa4c096d15b6e0cebdc047ff","after":"ab284a935cd1a2a62cedfcc4fb694f3ee9da12d1","ref":"refs/heads/faster_convolve","pushedAt":"2024-05-12T10:25:41.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"},"commit":{"message":"Improve the performance of convolve (and correlate)\n\nThe exising implementation of `convolve` (which is also used for `correlate`) was pretty slow. The slowness was due to the fact that we were using regular tensor element access in the inner loop of the convolution, which was very expensive.\n\nThe solution was to ensure that the input tensors were contiguous (by cloning them if necessary) and then using `unsafe_raw_buf` for all the tensor element accesses, which is safe because we know that the indexes are all within the tensor boundaries.\n\nOn my system this change makes a large convolution go from ~1.5 seconds in release mode and ~0.25 seconds in danger mode down to ~65 usecs in both modes (i.e. a x23 reduction in release mode and a x3.8 reduction in danger mode)!","shortMessageHtmlLink":"Improve the performance of convolve (and correlate)"}},{"before":"381c5ba656e091353d576d70695ff87ce28bfc56","after":"2c7752bebfff02f5a9f451bc7daa99bf21b48063","ref":"refs/heads/more_missing_numpy_and_matlab","pushedAt":"2024-05-08T16:23:52.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"},"commit":{"message":"Add support for `almostEqual`\n\nThis was a useful std/math function that we did not support yet.","shortMessageHtmlLink":"Add support for almostEqual"}},{"before":"558305d85f9b2bf1165914c80ac9b49827a581c1","after":"b2027098cf2c1c06ad859b24b564340a4cc4d04f","ref":"refs/heads/master","pushedAt":"2024-05-08T15:27:28.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"},"commit":{"message":"Add Angel Ezquerra to contributors list (#651)","shortMessageHtmlLink":"Add Angel Ezquerra to contributors list (mratsim#651)"}},{"before":"fb882d231fab747b61f9c0a2cf4646b325300c1a","after":"558305d85f9b2bf1165914c80ac9b49827a581c1","ref":"refs/heads/master","pushedAt":"2024-05-08T15:24:00.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"},"commit":{"message":"Add Angel Ezquerra to contributors list","shortMessageHtmlLink":"Add Angel Ezquerra to contributors list"}},{"before":"558305d85f9b2bf1165914c80ac9b49827a581c1","after":"fb882d231fab747b61f9c0a2cf4646b325300c1a","ref":"refs/heads/master","pushedAt":"2024-05-08T15:11:08.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"},"commit":{"message":"Merge branch 'mratsim:master' into master","shortMessageHtmlLink":"Merge branch 'mratsim:master' into master"}},{"before":"53afa73ff382d8bbf9e6071e2749c2290c1e0ba5","after":"558305d85f9b2bf1165914c80ac9b49827a581c1","ref":"refs/heads/master","pushedAt":"2024-05-08T05:47:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"AngelEzquerra","name":"Angel Ezquerra","path":"/AngelEzquerra","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6682868?s=80&v=4"},"commit":{"message":"Add Angel Ezquerra to contributors list","shortMessageHtmlLink":"Add Angel Ezquerra to contributors list"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEZ69gpQA","startCursor":null,"endCursor":null}},"title":"Activity · AngelEzquerra/Arraymancer"}