From d4349a84863d1d092060f713ee3daa66f5256011 Mon Sep 17 00:00:00 2001 From: Vasu Date: Fri, 2 Jan 2026 20:05:20 +0000 Subject: [PATCH 1/2] Add Erfc op support --- coremltools/converters/mil/frontend/tensorflow/ops.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/coremltools/converters/mil/frontend/tensorflow/ops.py b/coremltools/converters/mil/frontend/tensorflow/ops.py index 524f1b063..8a1b1d4c6 100644 --- a/coremltools/converters/mil/frontend/tensorflow/ops.py +++ b/coremltools/converters/mil/frontend/tensorflow/ops.py @@ -2092,6 +2092,13 @@ def ERF(context, node): context.add(node.name, x) +@register_tf_op(tf_alias=["Erfc"]) +def ERFC(context, node): + x = context[node.inputs[0]] + x = mb.sub(x=1.0, y=mb.erf(x=x), name=node.name) + context.add(node.name, x) + + @register_tf_op(tf_alias=["LeakyRelu"]) def LeakyReLU(context, node): x = context[node.inputs[0]] From 23fc915de11957caa66ea7bcf5b1ea194daf0e1a Mon Sep 17 00:00:00 2001 From: Vasu Date: Sat, 3 Jan 2026 22:03:29 +0000 Subject: [PATCH 2/2] Add unit tests for Erfc op Signed-off-by: Vasu --- .../converters/mil/frontend/tensorflow/test/test_ops.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/coremltools/converters/mil/frontend/tensorflow/test/test_ops.py b/coremltools/converters/mil/frontend/tensorflow/test/test_ops.py index cdd3e221d..2b5b9dee7 100644 --- a/coremltools/converters/mil/frontend/tensorflow/test/test_ops.py +++ b/coremltools/converters/mil/frontend/tensorflow/test/test_ops.py @@ -2318,6 +2318,7 @@ class TestElementWiseUnary(TensorFlowBaseTest): "cos", "cosh", "erf", + "erfc", "exp", "floor", "inverse", @@ -2374,6 +2375,9 @@ def cast_func(x): def clip_func(x): return tf.clip_by_value(x, clip_value_min=0.0, clip_value_max=5.0) + def erfc_func(x): + return tf.math.erfc(x) + def _get_test(test_mode): if test_mode == "abs": res = tf.abs @@ -2431,6 +2435,9 @@ def _get_test(test_mode): elif test_mode == "erf": res = tf.math.erf val = random_gen(input_shape, rand_min=1, rand_max=6) + elif test_mode == "erfc": + res = erfc_func + val = random_gen(input_shape, rand_min=1, rand_max=6) elif test_mode == "exp": if compute_unit != ct.ComputeUnit.CPU_ONLY: # We skip GPU here, since exp(1) already differs in backend.